【学习报告】《LeetCode零基础指南》(第六讲)C排序API

第五天打卡
一、排序API相关
推荐文章:《LeetCode零基础指南》(第六讲)C排序API
二、题目

1、排序数组
在这里插入图片描述

int cmp(int *a,int *b){
    
    
     return (*(int *)a)-(*(int *)b);
 }
int* sortArray(int* nums, int numsSize, int* returnSize){
    
    
    qsort(nums,numsSize,sizeof(int),cmp);
    *returnSize = numsSize;
    return nums;
}

2、多数元素
在这里插入图片描述

int cmp(int *a,int *b){
    
    
    return (*(int *)a)-(*(int *)b);
}
int majorityElement(int* nums, int numsSize){
    
    
    qsort(nums,numsSize,sizeof(int ),cmp);
    return nums[numsSize/2];
}

3、存在重复元素
在这里插入图片描述

int cmp(int *a,int *b){
    
    
    return (*(int*)a)-(*(int*)b);
}

bool containsDuplicate(int* nums, int numsSize){
    
    
    qsort(nums,numsSize,sizeof(int ),cmp);
    for(int i=1;i<numsSize;++i){
    
    
        if(nums[i]==nums[i-1]){
    
    
            return true;
        }
    }
    return false;
}

4、最大间距
在这里插入图片描述

int cmp(int *a,int *b){
    
    
    return (*(int *)a)-(*(int *)b);
}

int maximumGap(int* nums, int numsSize){
    
    
    int max=0;
    qsort(nums,numsSize,sizeof(int),cmp);
    for(int i=1;i<numsSize;++i){
    
    
        if(nums[i]-nums[i-1]>max){
    
    
            max = nums[i]-nums[i-1];
        }
    }
    return max;
}

5、按奇偶排序数组
在这里插入图片描述

int qua(int x){
    
    
     return x%2;
 }
 int cmp(int *a,int *b){
    
    
     return qua(*(int *)a)-qua(*(int *)b);
 }
int* sortArrayByParity(int* nums, int numsSize, int* returnSize){
    
    
    int *ret = (int *)malloc(numsSize*sizeof(int ));
    qsort(nums,numsSize,sizeof(int ),cmp);
    for(int i=0;i<numsSize;++i){
    
    
        ret[i]=nums[i];
    }
    *returnSize = numsSize;
    return ret;
}

6、最小时间差
在这里插入图片描述

int cmp(int *a,int *b){
    
    
    return (*(int *)a)-(*(int *)b);
}
int min(int a,int b){
    
    
    return a>b?b:a;
}
int findMinDifference(char ** timePoints, int timePointsSize){
    
    
    int ans=1440;
    int *ret = (int *)malloc(timePointsSize*sizeof(int ));
    int i,a,b;
    
    for(i=0;i<timePointsSize;++i){
    
    
        sscanf(timePoints[i],"%d:%d",&a,&b);
        ret[i] = a*60 + b;
    }
    qsort(ret,timePointsSize,sizeof(int ),cmp);
    for(i=1;i<timePointsSize;++i){
    
    
        ans = min(ans,ret[i]-ret[i-1]);
    }
    ans = min(ans,ret[0]-ret[timePointsSize-1]+1440);
    return ans;
}

sscanf()函数学习

7、三角形的最大周长
在这里插入图片描述

int cmp(int *a,int *b){
    
    
    return *(int *)a-*(int *)b;
}
int largestPerimeter(int* nums, int numsSize){
    
    
    qsort(nums,numsSize,sizeof(int ),cmp);
    for(int i=numsSize-1;i>=2;--i){
    
    
        if(nums[i-2]+nums[i-1]>nums[i]){
    
    
            return nums[i-2]+nums[i-1]+nums[i];
        }
    }
    return 0;
}

8、救生艇
在这里插入图片描述

![int cmp(int *a,int *b){
    
    
    return *(int *)a-*(int *)b;
}
int numRescueBoats(int* people, int peopleSize, int limit){
    
    
    int ans=0;
    int i=0;int r=peopleSize-1;
    qsort(people,peopleSize,sizeof(int ),cmp);
    while(i<=r){
    
    
        if(i==r){
    
    
            ++ans;break;
        }else if(people[i]+people[r]>limit){
    
    
            ++ans;r--;
        }else{
    
    
            ++ans;i++;r--;
        }
    }
    return ans;
}

猜你喜欢

转载自blog.csdn.net/weixin_48989391/article/details/121572810
今日推荐