贪心算法-题目1力扣455(简单题)
力扣455,给小朋友发饼干
假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。
对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。
如果 s[j]>= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值
思路:先把胃口和饼干排一下序,从大到小看一下每块饼干是否能喂饱小朋友,如果不能喂饱,只能用最大的喂饱下一个小朋友了
代码流程:先int型qsort一下,用法需要记住,非双for嵌套代码编写流程
知识点:函数结构,int使用,以及头文件
#include<stdlib.h>
int findContentChildren(int* g, int gSize, int* s, int sSize) {
if(!(gSize*sSize)) return 0;
int cmp(const *a,const *b)
{
return *a-*b;
}
qsort(g,gSize,sizeof(int),cmp);
qsort(s,sSize,sizeof(int),cmp);
int start=sSize-1;
int count=0;
for(int j=gSize-1;j>=0;j--)
{
if((start>=0)&&(s[start]>=g[j]))//此处如果把(start>=0)放在后面,力扣编译错误,vscode编译成功,原因当start<0时,再进入if进行判断时s[start]已经发生越界
{
start--;
count++;
}
}
return count;
}
浙公网安备 33010602011771号