栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

leetcode 力扣 455.分发饼干

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

leetcode 力扣 455.分发饼干

题目描述:


解题方法: 1.双指针法:

我们在排序后用两个指针指向两个数组,从胃口最小的孩子开始,在一个孩子吃到饼干之后,两个指针都向右移动,让下一个孩子开始吃饼干。如果饼干尺寸小于孩子的最小胃口,j指针向右移动,换一块更大的饼干,思路简单

代码:
int com(const void * a, const void * b)
{
    return *(int*)a - *(int*)b;
}
int findContentChildren(int* g, int gSize, int* s, int sSize)
{
    qsort (g, gSize, sizeof(int), com);
    qsort (s, sSize, sizeof(int), com);
    int i = 0,j = 0,k,temp,flag = 0;
    while(i < gSize && j < sSize) 
	{
        if(g[i] <= s[j]) 
		{
            i++;
            j++;
            flag++;
        } 
		else 
		{
            j++;
        }
    }    
    return flag;
}
运行结果:

运行结果

2. 快排+贪心算法:

在这种类型求最优解的问题里,贪心算法是最为常见的解法,在这道题里面为了满足更多孩子的胃口,我们应该优先满足胃口小的孩子,我们可以先调用C语言的快排函数把孩子的胃口和食物数量的多少从小到大排序,再用贪心的方法把饼干进行分配

代码:
int com(const void *a,const void *b) {
    return *(int*)a-*(int*)b;
}

int findContentChildren(int* g, int gSize, int* s, int sSize) {
    qsort(g, gSize, sizeof(int), com);
    qsort(s, sSize, sizeof(int), com);
    int i,j;
    int count=0;
    for(i=0,j=0;i
        while(js[j]) 
		{
            j++;
        }
        if(j
            count++;
        }
    }
    return count;
}
运行结果:

运行结果

知识点: 1.qsort()函数:

qsort()是C语言自带的快速排序函数,它的头文件是

函数声明:
void qsort (void* base, size_t num, size_t size,int (*com)(const void*,const void*))
函数参数:

第一个参数是首元素地址base;第二个参数是元素个数num;第三个参数是元素大小size;第四个参数 自定义比较函数com

com参数:
int com(const void * a,const void * b)
{
    return *(int*)a - *(int*)b;
}

com()函数是qsort()函数排序的核心内容,它的功能是比较两个函数的大小,传入两个const void 型的参数,返回值为正则a大,那么b的值排在前,返回值为负则b大,则a的值排在前,但当a=*b时,他们的前后关系无法确定,这也是qsort()函数的缺陷

2.sizeof()函数:

sizeof()函数可以求出元素占用存储空间的字节数

3.函数传入的是形参:

例如题目中用到的com()函数,如果想把函数中对数值的改变应用到整个主函数里,那就应该传入变量的指针并且通过指针对元素的值进行修改

4.调用函数的问题:

在调用函数时一定要在函数后加上(),告诉编译器你正在调用函数

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/925460.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号