【例题1】2535. 数组元素和与数字和的绝对差 - 力扣(LeetCode)

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);
}

【例题2】628. 三个数的最大乘积 - 力扣(LeetCode)

//基于快排
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);
}

【例题3】2091. 从数组中移除最大值和最小值 - 力扣(LeetCode)

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);
}

【例题4】1876. 长度为三且各字符不同的子字符串 - 力扣(LeetCode)

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;
}

【例题5】LCP 17. 速算机器人 - 力扣(LeetCode)

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;
}