【例题1】1464. 数组中两元素的最大乘积 - 力扣(LeetCode)

int cmp(const int* p1,const int* p2){
    return *p2-*p1;
}

int maxProduct(int* nums, int numsSize){
    qsort(nums,numsSize,sizeof(int),cmp);    
    return (nums[0]-1)*(nums[1]-1);
}

【例题2】2148. 元素计数 - 力扣(LeetCode)

int cmp(const int * p1,const int * p2){
    return *p1-*p2;
}

int countElements(int* nums, int numsSize){
    if( numsSize == 0 || numsSize == 1 || numsSize == 2) return 0;
    qsort(nums,numsSize,sizeof(int),cmp);
    int L = 0,R = numsSize - 1;
    while(nums[L] == nums[L+1]  ){
        if(L+1 ==R) return 0;
        L++;
    }
    while(nums[R] == nums[R-1]){
        if(R-1 == L) return 0;
        R--;
    }
    return R - L - 1 >= 0 ? R-L-1 : 0 ;
}

【例题3】88. 合并两个有序数组 - 力扣(LeetCode)

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n){
    int R1 = m-1;
    int R2 = n-1;
    int len = m+n-1;
    while(R1 >= 0 && R2 >= 0){
        if(nums1[R1] > nums2[R2]){
            nums1[len--] = nums1[R1--];
        }else{
             nums1[len--] = nums2[R2--];
        }
    }
    while(R1>=0){
        nums1[len--] = nums1[R1--];
    }
    while(R2>=0){
        nums1[len--] = nums2[R2--];
    }
}

【例题4】2733. 既不是最小值也不是最大值 - 力扣(LeetCode)

int cmp(int* p1,int* p2){
    return *p1-*p2;
}
int findNonMinOrMax(int* nums, int numsSize){
    if(numsSize <= 2) return -1;
    qsort(nums,numsSize,sizeof(int),cmp);
    int L = 0;
    int R = numsSize-1;
    while(nums[L]==nums[L+1] && L+1 != R) L++;
    while(nums[R]==nums[R-1] && R-1!=L) R--;
    if(R - L <= 1) return -1;
    return nums[L + 1];
}

【例题5】389. 找不同 - 力扣(LeetCode)

int hash[26];
char findTheDifference(char * s, char * t){
    memset(hash,0,sizeof(hash));
    int i;
    for(i=0;i<strlen(s);i++){
        hash[s[i]-'a']++;
    }
    for(i=0;i<strlen(t);i++){
        hash[t[i]-'a']--;
    }
    for(i=0;i<26;i++){
        if(hash[i]==-1){
            break;
        }
    }
    return i+'a';
}