Go语言题解LeetCode455分发饼干示例详解

 更新时间:2022年12月30日 11:11:46   作者:刘09k11  
这篇文章主要为大家介绍了Go语言题解LeetCode455分发饼干示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

题目描述

原题链接 :

455. 分发饼干 - 力扣(LeetCode) (leetcode-cn.com)

假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。

对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。

  示例 1:

输入: g = [1,2,3], s = [1,1]
输出: 1
解释: 
你有三个孩子和两块小饼干,3个孩子的胃口值分别是:1,2,3。
虽然你有两块小饼干,由于他们的尺寸都是1,你只能让胃口值是1的孩子满足。
所以你应该输出1。

示例 2:

输入: g = [1,2], s = [1,2,3]
输出: 2
解释: 
你有两个孩子和三块小饼干,2个孩子的胃口值分别是1,2。
你拥有的饼干数量和尺寸都足以让所有孩子满足。
所以你应该输出2.

提示:

1 <= g.length <= 3 * 10^4

0 <= s.length <= 3 * 10^4

1 <= g[i], s[j] <= 2^31 - 1

思路分析

其实这道题真的很像田忌赛 马,我们这么想,我们要打败一堆小朋友,其中有上等小朋友,中等小朋友,下等小朋友。

而我们有上等饼干,中等饼干,下等饼干,小朋友只有吃了足够大的饼干才会被打败,我们该怎么做?

答案一定是要,要用最上等的饼干打败最厉害的小朋友,不然就是一种浪费(如果你用上等饼干打败下等小朋友,那么谁来打败上等小朋友?)

其实这也是贪心思想,想法有了,就剩下实现代码了,代码如下

AC 代码

class Solution {
public:
    int findContentChildren(vector<int>& g, vector<int>& s) {
        sort(s.begin(),s.end(),greater<int>());
        sort(g.begin(),g.end(),greater<int>());
        int i=0,j=0,ans=0;
        while(i<s.size()&&j<g.size())
        {
            if(s[i]>=g[j])
            {
                ++ans;++i;++j;
            }
            else
            ++j;
        }
        return ans;
    }
};

分发饼干 贪心算法

解题思路

先对两个数组排序

从后开始遍历g,使得大饼干给胃口大的孩子

局部最优就是胃口大的孩子匹配大的饼干

代码

class Solution {
    public int findContentChildren(int[] g, int[] s) {//s:饼干
        Arrays.sort(g);
        Arrays.sort(s);
        int count = 0;
        int start = s.length - 1;//饼干数量
        for(int index = g.length - 1; index >= 0; index--){
            if(start >= 0 && g[index] <= s[start]){
                count++;
                start--;
            }
        }
        return count;
    }
}

以上就是Go语言题解LeetCode455分发饼干示例详解的详细内容,更多关于Go题解分发饼干的资料请关注脚本之家其它相关文章!

相关文章

  • 解决go语言ssh客户端密码过期问题

    解决go语言ssh客户端密码过期问题

    这篇文章主要介绍了go语言ssh客户端解决密码过期问题,本文给大家分享了解决的方法和原理,非常不错,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • Go语言使用对称加密的示例详解

    Go语言使用对称加密的示例详解

    在项目开发中,我们经常会遇到需要使用对称密钥加密的场景,比如客户端调用接口时,参数包含手机号、身份证号或银行卡号等。本文将详细讲解Go语言使用对称加密的方法,需要的可以参考一下
    2022-06-06
  • Golang开发命令行之flag包的使用方法

    Golang开发命令行之flag包的使用方法

    这篇文章主要介绍Golang开发命令行及flag包的使用方法,日常命令行操作,相对应的众多命令行工具是提高生产力的必备工具,本文围绕该内容展开话题,需要的朋友可以参考一下
    2021-10-10
  • Golang中如何实现枚举详析

    Golang中如何实现枚举详析

    举就是将数据值一一列出来,枚举可以用来表示一些固定的值,枚举是常量组成的,下面这篇文章主要给大家介绍了关于Golang中如何实现枚举的相关资料,需要的朋友可以参考下
    2022-07-07
  • 深入解析Sync.Pool如何提升Go程序性能

    深入解析Sync.Pool如何提升Go程序性能

    在并发编程中,资源的分配和回收是一个很重要的问题。Go 语言的 Sync.Pool 是一个可以帮助我们优化这个问题的工具。本篇文章将会介绍 Sync.Pool 的用法、原理以及如何在项目中正确使用它,希望对大家有所帮助
    2023-05-05
  • 解决golang gin框架跨域及注解的问题

    解决golang gin框架跨域及注解的问题

    这篇文章主要介绍了解决golang gin框架跨域及注解的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • GoLang OS包以及File类型详细讲解

    GoLang OS包以及File类型详细讲解

    go中对文件和目录的操作主要集中在os包中,下面对go中用到的对文件和目录的操作,做一个总结笔记。在go中的文件和目录涉及到两种类型,一个是type File struct,另一个是type Fileinfo interface
    2023-03-03
  • Go语言LeetCode题解937重新排列日志文件

    Go语言LeetCode题解937重新排列日志文件

    这篇文章主要为大家介绍了Go语言LeetCode题解937重新排列日志文件,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • Go语言基础语法和基本数据类型知识巩固

    Go语言基础语法和基本数据类型知识巩固

    这篇文章主要为大家介绍了Go语言基础语法和基本数据类型知识巩固,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • Go语言使用templ实现编写HTML用户界面

    Go语言使用templ实现编写HTML用户界面

    templ是一个在 Go 中编写 HTML 用户界面的语言,使用 templ,我们可以创建可呈现 HTML 片段的组件,下面就跟随小编一起了解一下具体的实现方法吧
    2023-12-12

最新评论