intmissingNumber(int* nums,int numsSize){int sum =0;for(int i =0; i < numsSize; i++){if(nums[i]>=0&& nums[i]<= numsSize) sum += nums[i];}return numsSize*(numsSize+1)/2- sum;}
首先排序,假设取第 i 个值,那么与当前值组成数对的值下标为 n-i-1 找到所有数对中的最大值即可。
#defineMAX(a,b) a > b ? a : b;intcmp(constvoid*a,constvoid*b){return*(int*)a -*(int*)b;}intminPairSum(int* nums,int numsSize){int i, n, ans, tmp;qsort(nums, numsSize,sizeof(int), cmp);
n = numsSize /2;
ans =0;for(i =0; i < numsSize;++i){
tmp = nums[i]+ nums[numsSize-1-i];
ans =MAX(ans, tmp)}return ans;}
classSolution{public:
vector<int>deckRevealedIncreasing(vector<int>& deck){sort(deck.begin(), deck.end());
vector<int> ans, tmp, ret;int i, n = deck.size();int l =0, r = n -1;for(i =0; i < n;++i){
tmp.push_back(i);}while(l <= r){
ans.push_back( tmp[l]);++l;if( l > r){break;}
tmp.push_back( tmp[l]);++l;++r;}for(i =0; i < n;++i){
ret.push_back(-1);}for(i =0; i < n;++i){
ret[ ans[i]]= deck[i];}return ret;}};