【C语言Coding】第十八天
原创
©著作权归作者所有:来自51CTO博客作者小样小响的原创作品,请联系作者获取转载授权,否则将追究法律责任
int differenceOfSum(int* nums, int numsSize){
int sum1 = 0,sum2 = 0;
for(int i=0;i<numsSize;i++){
sum1 += nums[i];
sum2 += nums[i]/1000;
sum2 += nums[i]%1000/100;
sum2 += nums[i]%100/10;
sum2 += nums[i]%10;
}
return abs(sum1 - sum2);
}
//基于快排
int cmp(const int* p1,const int* p2){
return *p2 - *p1;
}
int maximumProduct(int* nums, int numsSize){
qsort(nums,numsSize,sizeof(nums[0]),cmp);
return nums[0]*nums[1]*nums[2] > nums[0]*nums[numsSize-1]*nums[numsSize-2]?nums[0]*nums[1]*nums[2]:nums[0]*nums[numsSize-1]*nums[numsSize-2];
}
//线性扫描
int max(int a,int b){
return a>b?a:b;
}
int maximumProduct(int* nums, int numsSize){
int max1 = INT_MIN,max2 = INT_MIN,max3 = INT_MIN;
int min2 = INT_MAX,min3 = INT_MAX;
for(int i=0;i<numsSize;i++){
int temp = nums[i];
if (temp < min2) {
min3 = min2;
min2 = temp;
} else if (temp < min3) {
min3 = temp;
}
if (temp > max1) {
max3 = max2;
max2 = max1;
max1 = temp;
} else if (temp > max2) {
max3 = max2;
max2 = temp;
} else if (temp > max3) {
max3 = temp;
}
}
return max(max1*max2*max3,max1*min2*min3);
}
int minValue(int a,int b,int c){
return a<b?(a<c?a:c):(b<c?b:c);
}
int minimumDeletions(int* nums, int numsSize){
int max=INT_MIN,max_index = 0;
int min=INT_MAX,min_index = 0;
for(int i=0;i<numsSize;i++){
if(nums[i] > max) {
max = nums[i];
max_index = i;
}
if(nums[i] < min) {
min = nums[i];
min_index = i;
}
}
int l = min_index < max_index ? min_index : max_index;
int r = min_index > max_index ? min_index : max_index;
return minValue(r+1,numsSize-l,l+numsSize+1-r);
}
int countGoodSubstrings(char * s){
int ans = 0;
if(strlen(s) < 3) return 0;
for(int i=0;i<strlen(s)-2;i++){
if(s[i] != s[i+1] && s[i] != s[i+2] && s[i+1] != s[i+2]) ans++;
}
return ans;
}
int calculate(char* s){
int x = 1,y = 0;
for(int i=0;i<strlen(s);i++){
if(s[i]=="A") x = 2*x+y;
else y = 2*y+x;
}
return x+y;
}