(贪心 + 双指针) LeetCode 455. 分发饼干

news2024/9/23 19:18:30

原题链接

一. 题目描述

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

对每个孩子 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 * 104
  • 0 <= s.length <= 3 * 104
  • 1 <= g[i], s[j] <= 231 - 1

二. 解题思路

本题的意思很简单,给定一个饼干数组和孩子胃口数组,要求给每一个孩子分配的饼干要满足孩子的胃口,问你最多可以满足几个孩子,典型的贪心思想。

给定一个图片如下所示,我们可以先将饼干数组和孩子胃口数组从小到大排序,然后让最大的饼干尽量满足大胃口的孩子,这样就不会造成过多的浪费。

我们使用双指针的思想,i 遍历孩子胃口,j 遍历饼干大小,都从最大开始遍历,如果当前的饼干大小可以满足孩子的胃口,就让结果加一,然后两个指针同时减一,如果不满足,让孩子胃口指针减一,寻找满足饼干大小的最大孩子胃口。

话不多说!!!上代码!!

三. 代码

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

四. 总结

本题是贪心的入门题目,可以锻炼对贪心的认知和思想,希望大家可以有效去练习,多思考,一起进步!

时间复杂度:O(mlogm+nlogn),其中 m 和 n 分别是数组 g 和 s 的长度。对两个数组排序的时间复杂度是 O(mlogm+nlogn),遍历数组的时间复杂度是 O(m+n),因此总时间复杂度是 O(mlogm+nlogn)。

空间复杂度:O(logm+logn),其中 m 和 n 分别是数组 g 和 s 的长度。空间复杂度主要是排序的额外空间开销。

喜欢的话给个关注吧!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2041664.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数学建模备赛】Ep03:皮尔逊person相关系数

文章目录 一、前言&#x1f680;&#x1f680;&#x1f680;二、皮尔逊person相关系数&#xff1a;☀️☀️☀️1. 总体皮尔逊person相关系数① 总体和样本② 理解协方差&#xff08;受量纲影响&#xff09;③ 剔除量纲影响 2. 样本皮尔逊person相关系数3. 相关性可视化① 皮尔…

后端代码练习1——加法计算器

1. 需求 输入两个整数&#xff0c;点击 “点击相加” 按钮&#xff0c;显示计算结果。 2.准备工作 创建Spring Boot项目&#xff0c;引入Spring Web依赖&#xff0c;把前端代码放入static目录下。 2.1 前端代码 <!DOCTYPE html> <html lang"en"> <h…

Unity + HybridCLR 从零开始

官方文档开始学习,快速上手 | HybridCLR (code-philosophy.com)是官方文档链接 1.建议使用2019.4.40、2020.3.26、 2021.3.0、2022.3.0 中任一版本至于其他2019-2022LTS版本可能出现打包失败情况 2. Windows Win下需要安装visual studio 2019或更高版本。安装时至少要包含 使…

apache-lotdb集群部署

一、下载 发行版本 | IoTDB Website jdk版本&#xff1a; 系统版本&#xff1a; 二、服务器规划 节点名称主机名服务192.168.110.110master01.110110.cnConfigNode、DataNode192.168.110.111node01.110111.cnConfigNode、DataNode192.168.110.112node02.110112.cnConfigNode、…

一文搞懂Python自动化测试框架!

一文搞懂Python自动化测试框架 如果你选用python做自动化测试&#xff0c;那么python测试框架的相关知识你必须要了解下。 首先我们先学习一下框架的基本知识。 什么是框架&#xff08;百度百科&#xff09;&#xff1f; 框架( Framwork )是构成一类特定软件可复用设计的一组…

100V-50mA超高压低压差线性稳压器具有电流保护功能

产品概述 PC6001 是一款能够耐受超高电压的线性稳压器&#xff0c;不仅融合了耐热增强型封装的优势&#xff0c;还能够承受持续直流电压或最高达 100V 的瞬态输入电压。 PC6001 器件与任何高于 2.2F 的输出电容以及高于0.47F 的输入电容搭配使用时均可保持稳定&#xff08;过…

mfc140u.dll丢失错误解决方法的基本思路——四种修复mfc140u.dll的方法

当遇到mfc140u.dll丢失的错误时&#xff0c;意味着你的系统中缺失了一个重要的动态链接库文件&#xff0c;该文件是微软 Visual C Redistributable for Visual Studio 2015 的一部分&#xff0c;对于运行那些用 Visual C 开发的程序是必需的。今天就教你mfc140u.dll丢失错误解决…

派单系统功能案例分析

派单系统是一种专门用于协调和分配任务的软件系统&#xff0c;它通过自动化和智能化的方式&#xff0c;确保任务能够高效地完成。以下是对派单系统功能的案例分析&#xff0c;主要从任务分配、实时监控、数据统计与分析以及行业应用等方面进行阐述。 一、任务分配 派单系统的核…

​线上教育_VR虚拟实验室​解决方案优缺点

线上教育的兴起也预示着对VR虚拟实验室的需求&#xff0c;这些虚拟实验室可以帮助学生学习他们研究的经验和进行实践&#xff0c;帮助学生更好地理解知识。但是&#xff0c;基于VR虚拟现实技术的虚拟实验室本质上是灵活的&#xff0c;它能让孩子们更轻松、更快速地探索各种新事…

【博主推荐】HTML5新闻,博客,官网网站源码文章瀑布流+详情页面

文章目录 1.设计来源1.1 主界面1.2 文章详情界面1.3 联系我们界面1.4 关于我们界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff0c;在线沟通 【博主推荐】&#xff1a;前些天发现了一个巨牛的人工智能学习网站&…

mfc运行时报错内存不足闪退等问题

问题 mfc的打包程序源代码所在主机可以运行&#xff0c;在其他主机不能脱机运行&#xff0c;会报内存不足等莫名其妙的问题。 解决方法 排除其他代码上的问题后&#xff0c;看看是不是编译链的工具组件一致&#xff0c;我看新建项目的教程时没注意&#xff0c;红色框里的俩一…

Grok-2惊艳亮相,文生图功能竟然“无所不能“!

Grok-2 生成的图片 在人工智能的战场上&#xff0c;一场新的风暴正在酝酿。埃隆马斯克&#xff0c;这位科技界的"钢铁侠"&#xff0c;再次以其独特的方式搅动了 AI 的风云。就在谷歌和OpenAI互相角力之际&#xff0c;马斯克的 xAI 公司悄然推出了新一代AI模型 Grok-2…

深度学习中之前馈神经网络

目录 基本结构和工作原理 神经元和权重 激活函数 深度前馈网络 应用场景 优缺点 深度前馈神经网络与卷积神经网络&#xff08;CNN&#xff09;和循环神经网络&#xff08;RNN&#xff09;的具体区别和联系是什么&#xff1f; 具体区别 联系 如何有效解决前馈神经网络…

微软开源库 Detours 详细介绍与使用实例分享

目录 1、Detours概述 2、Detours功能特性 3、Detours工作原理 4、Detours应用场景 5、Detours兼容性 6、Detours具体使用方法 7、Detours使用实例 - 使用Detours拦截系统库中的UnhandledExceptionFilter接口&#xff0c;实现对程序异常的拦截 C软件异常排查从入门到精通…

Spring SSM框架--MVC

一、介绍 Spring 框架是一个资源整合的框架&#xff0c;可以整合一切可以整合的资源&#xff08;Spring 自身和第三方&#xff09;&#xff0c;是一个庞大的生态&#xff0c;包含很多子框架&#xff1a;Spring Framework、Spring Boot、Spring Data、Spring Cloud…… 其中Spr…

全球海事航行通告解析辅助决策系统

“全球海事航行通告解析辅助决策系统”是一个针对海事行业设计的智能系统&#xff0c;旨在帮助海上导航和航运操作人员解析和应对全球发布的海事航行通告。 要做这样的系统我们必须要了解海事签派员的日常工作。 海事签派员&#xff0c;也称为船舶操作员或船运调度员&#xff0…

国产车规级TSN芯片获十万片订单,将步入规模化应用

近日&#xff0c;从北京科技企业东土科技获悉&#xff0c;其研发并孵化的我国首颗列入工信部国产汽车芯片名录的车规级时间敏感网络&#xff08;TSN&#xff09;交换网络芯片&#xff0c;于近期获得国家新能源汽车技术创新中心10万片芯片订单&#xff0c;将规模化应用于车载网关…

bluecmsphp代码审计

bluecms代码审计 (一) 运行环境需求&#xff1a; 可用的 httpd 服务器&#xff08;如 Apache、Zeus、IIS 等&#xff09; PHP 4.3.0 及以上 MySQL 4.1 及以上配置文件审计 看到uploads/install/include/common.inc.php 当然我们可能自己根本不知道那个是重要的文件&#x…

从送外卖到自学编程,再到AI绘画,我的副业之路助我一年还清房贷车贷

一、引言 在这个快速变化的时代&#xff0c;每个人都有可能通过自己的努力改变命运。我&#xff0c;一个普通的外卖员&#xff0c;通过自学编程&#xff0c;最终掌握了AI绘画技能&#xff0c;实现了下班后赚取额外收入&#xff0c;一年内还清了房贷和车贷。以下是我的故事&…

力扣题/二叉树/路径总和 III

路径总和 III 力扣原题 给定一个二叉树的根节点 root &#xff0c;和一个整数 targetSum &#xff0c;求该二叉树里节点值之和等于 targetSum 的 路径 的数目。路径 不需要从根节点开始&#xff0c;也不需要在叶子节点结束&#xff0c;但是路径方向必须是向下的&#xff08;只能…