快排并从第一位开始隔位取数字
int cmp(const void*a,const void*b) { return *(int*)a-*(int*)b; } int arrayPairSum(int* nums, int numsSize) { qsort(nums,numsSize,sizeof(int),cmp); int sum=0; for(int i=0;i<numsSize;i+=2) { sum+=nums[i]; } return sum; }
int cmp(const void*a,const void*b) { return *(int*)a-*(int*)b; } int findLHS(int* nums, int numsSize){ qsort(nums,numsSize,sizeof(nums[0]),cmp); int ret=0; int begin=0; for(int end=0;end<numsSize;end++) { if(nums[end]-nums[begin]>1) { begin++;//若差值大于1,则左指针向右移,缩小二者差距 } if(nums[end]-nums[begin]==1) { ret=end-begin+1; } } return ret; }
int cmp(const void*a,const void *b){ return *(int*)a-*(int*)b; } int distributeCandies(int* candyType, int candyTypeSize) { qsort(candyType,candyTypeSize,sizeof(int),cmp); int count=1; for(int i=1;i<candyTypeSize;i++) { if(candyType[i]!=candyType[i-1]) { count++; } } return (candyTypeSize/2)>count?count:(candyTypeSize/2); }