目录
求奇数的乘积
cpp
#include <iostream>
using namespace std;
int main()
{
int t;
while (cin >> t)
{
int s = 1;
int k;
while (t--)
{
cin >> k;
if (k % 2)
{
s *= k;
}
}
cout << s << endl;
}
return 0;
}
数值统计
cpp
#include <iostream>
using namespace std;
int main()
{
int t;
while (cin >> t)
{
if (t == 0)
{
break;
}
int a = 0;
int b = 0;
int c = 0;
double k;
while (t--)
{
cin >> k;
if (k < 0)
{
a++;
}
else if (k > 0)
{
c++;
}
else
{
b++;
}
}
cout << a << " " << b << " " << c << endl;
}
return 0;
}
青年歌手大奖赛_评委会打分
cpp
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int k;
while (cin >> k)
{
double s = 0;
double MAX = 0;
double MIN = 100;
double t;
int p = k;
while (p--)
{
cin >> t;
s += t;
MAX = max(MAX, t);
MIN = min(MIN, t);
}
s = s - MAX - MIN;
s = s / (k - 2);
printf("%.2llf\n", s);
}
return 0;
}
猜数字
cpp
class Solution {
public:
int game(vector<int>& guess, vector<int>& answer) {
int res = 0;
for (int i = 0; i < 3; i++) {
if (guess[i] == answer[i])
res++;
}
return res;
}
};
拿硬币
cpp
class Solution {
public:
int minCount(vector<int>& coins) {
int res=0;
for(int i=0;i<coins.size();i++){
if(coins[i]%2==1){
res++;
coins[i]--;
}
res+=coins[i]/2;
}
return res;
}
};
值相等的最小索引
cpp
class Solution {
public:
int smallestEqual(vector<int>& nums) {
for(int i=0;i<nums.size();i++){
if(i%10==nums[i]){
return i;
}
}
return -1;
}
};
最大连续1的个数
cpp
class Solution {
public:
int findMaxConsecutiveOnes(vector<int>& nums) {
int res = 0;
int sum = 0;
for (int i = 0; i < nums.size(); i++) {
if (nums[i] == 1) {
sum++;
res = max(res, sum);
} else {
sum = 0;
}
}
return res;
}
};
差的绝对值为K的数对数目
cpp
class Solution
{
public:
int countKDifference(vector<int> &nums, int k)
{
int res = 0;
for (int i = 0; i < nums.size(); i++)
{
for (int j = i + 1; j < nums.size(); j++)
{
if (abs(nums[i] - nums[j]) == k)
res++;
}
}
return res;
}
};
数组中两元素的最大乘积
cpp
class Solution {
public:
int maxProduct(vector<int>& nums) {
sort(nums.begin(),nums.end());
return (nums[nums.size()-1]-1)*(nums[nums.size()-2]-1);
}
};
数组元素和与数字和的绝对差
cpp
class Solution {
public:
int differenceOfSum(vector<int>& nums) {
int yuansu=0;
int shuwei=0;
for(int i=0;i<nums.size();i++){
yuansu+=nums[i];
while(nums[i]){
shuwei+=nums[i]%10;
nums[i]/=10;
}
}
return abs(yuansu-shuwei);
}
};
K个元素的最大和
cpp
class Solution {
public:
int maximizeSum(vector<int>& nums, int k) {
int res=0;
int m=nums[0];
for(int i=0;i<nums.size();i++){
m=max(m,nums[i]);
}
for(int i=0;i<k;i++){
res=res+m+i;
}
return res;
}
};
等差三元组的数目
cpp
class Solution {
public:
int arithmeticTriplets(vector<int>& nums, int diff) {
int res=0;
for(int i=0;i<nums.size();i++){
for(int j=i+1;j<nums.size();j++){
if(nums[j]-nums[i]==diff){
for(int k=j+1;k<nums.size();k++){
if(nums[k]-nums[j]==diff){
res++;
}
}
}
}
}
return res;
}
};
移除元素
快慢双指针
cpp
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int slow = 0;
for (int fast = 0; fast < nums.size(); ++fast) {
if (nums[fast] != val) {
nums[slow] = nums[fast];
slow++;
}
}
return slow;
}
};
基于排列构建数组
cpp
class Solution {
public:
vector<int> buildArray(vector<int>& nums) {
vector<int> s(nums.size());
for(int i=0;i<nums.size();i++){
s[i]=nums[nums[i]];
}
return s;
}
};
数组串联
cpp
class Solution {
public:
vector<int> getConcatenation(vector<int>& nums) {
vector<int> s(nums.size()*2);
for(int i=0;i<nums.size();i++){
s[i]=nums[i];
s[i+nums.size()]=nums[i];
}
return s;
}
};
