目錄
求奇數的乘積
數值統計
青年歌手大獎賽_評委會打分
猜數字
拿硬幣
值相等的最小索引
最大連續1的個數
差的絕對值為K的數對數目
數組中兩元素的最大乘積
數組元素和與數字和的絕對差
K個元素的最大和
等差三元組的數目
移除元素
基于排列構建數組
數組串聯
求奇數的乘積
#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;
}
數值統計
#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;
}
青年歌手大獎賽_評委會打分
#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;
}
猜數字
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;}
};
拿硬幣
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;}
};
值相等的最小索引
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的個數
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的數對數目
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;}
};
數組中兩元素的最大乘積
class Solution {
public:int maxProduct(vector<int>& nums) {sort(nums.begin(),nums.end());return (nums[nums.size()-1]-1)*(nums[nums.size()-2]-1);}
};
數組元素和與數字和的絕對差
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個元素的最大和
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;}
};
等差三元組的數目
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;}
};
移除元素
快慢雙指針
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;}
};
基于排列構建數組
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;}
};
數組串聯
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;}
};