【贪心算法】Leetcode 455.分发饼干 376. 摆动序列 53. 最大子数组和

【贪心算法】Leetcode 455 分发饼干 376. 摆动序列【规律很多】53. 最大子数组和

  • 455 分发饼干
    • 局部最优推全局最优:尽量用大饼干去满足大胃口的小朋友
  • 376. 摆动序列【规律很多】
    • 思想:注意考虑一个坡度留首尾两个点、平坡、首尾
  • 53. 最大子数组和【好思想】
    • 思想:遍历nums,当前“连续和”为负数的时候立刻放弃,从下一个元素重新计算“连续和”

455 分发饼干

在这里插入图片描述

---------------🎈🎈题目链接🎈🎈-------------------

局部最优推全局最优:尽量用大饼干去满足大胃口的小朋友

class Solution {public int findContentChildren(int[] g, int[] s) {// 贪心// 局部最优推全局最优:尽量用大饼干去满足大胃口的小朋友if(s.length == 0) return 0;int result = 0;Arrays.sort(g);Arrays.sort(s);// 遍历小孩胃口g[i]int start = s.length - 1;for(int i = g.length-1; i >=0; i--){if(start >= 0 && g[i] <= s[start]){result++;start--;}}return result;}
}  

时间复杂度

对两个数组进行排序的时间复杂度为 O(n log n),其中 n 分别为小孩胃口数组 g 和饼干数组 s 的长度。
在最坏情况下,遍历两个数组的时间复杂度为 O(n),其中 n 是小孩胃口数组 g 的长度。
因此,总的时间复杂度为 O(n log n)。

空间复杂度:

除了输入数组 g 和 s 外,额外使用了常量空间进行迭代和计算。
因此,总的空间复杂度为 O(1)。


376. 摆动序列【规律很多】

在这里插入图片描述

一正一负 找到一个峰值:(pre>=0 && cur<0) || (pre<=0 && cur>0)。result++,遇到波动点就更新pre的值为cur
设定开头pre = 0:即原本是2-5,模拟为2-2-5 这样可以保证计算到开头的节点也算波动点。
设定开头cur = 0 ,但是随后循环中就赋值了 cur = nums[i+1] - nums[i]
在这里插入图片描述

思想:注意考虑一个坡度留首尾两个点、平坡、首尾

class Solution {public int wiggleMaxLength(int[] nums) {
// 贪心  一个坡度上只留首位两个点
// 考虑平坡的时候// 考虑单调有平坡 : 左右留一个就行 pre>=0 && cur<0 || pre<=0 && cur>0// 考虑上下中间有平坡 :只需要在 坡度摆动变化的时候,更新 pre 就行,这样 pre 在 单调区间有平坡的时候 就不会发生变化,造成我们的误判
// 考虑首尾元素 首尾元素都要计算坡度 尾部直接result本身就为1,首部假定开头pre=0int result = 1;int pre = 0; // 前一段默认先为0 后面遇到波动点的时候赋值为curint cur = 0;for(int i = 0; i < nums.length-1; i++){cur = nums[i+1] - nums[i];  // 后一段if((pre>=0 && cur<0) || (pre<=0 && cur>0)){  // 一正一负就找到一个峰值result++;pre = cur;  // 即出现波动点才给pre赋值为cur,就可以避免单调中平坡的影响} }return result;}
}

53. 最大子数组和【好思想】

题目链接
在这里插入图片描述

思想:遍历nums,当前“连续和”为负数的时候立刻放弃,从下一个元素重新计算“连续和”

思想!!!:
如果一部分加和为负数,那么后面再加一个无论什么元素都相当于是减,那么就没必要了
那么就遍历nums,遇到和为负数就重新开始计算加和,
没遇到的时候:如果加和结果大于result就给result赋值 最后返回result
注意这里用了int result = Integer.MIN_VALUE; 保证了若数组都为负数,result记录的就是最大的负数。

class Solution {public int maxSubArray(int[] nums) {// 贪心算法,// 如果一部分加和为负数,那么后面再加一个无论什么元素都相当于是减,那么就没必要了// 那么就遍历nums,遇到和为负数就重新开始计算加和,没遇到的时候如果加和结果大于result就给result赋值,// 最后返回resultint result = Integer.MIN_VALUE; // 这个很重要 可以保证如果全为负数的时候可以正常输出int sum = 0;for(int i = 0; i < nums.length; i++){sum = sum+nums[i];if(sum > result) {  result = sum;}if(sum < 0){ // 如果加和小于零那就重新开始 因为后面再加没必要了sum = 0;}    }return result; // 最后返回的result就是最大的}
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

18个惊艳的可视化大屏(第12辑):智慧校园与教育方向

智慧校园可视化大屏通过数据可视化技术&#xff0c;将学校各个方面的数据信息进行展示&#xff0c;可以提高信息公开透明度、优化校园管理、提高学生教育质量和提高校内活动宣传效果等。 1提高信息公开透明度&#xff1a; 通过大屏幕展示校园各个方面的数据信息&#xff0c;可…

MyBatisPlus(SpringBoot版)的分页插件

目录 一、前置工作: 1.整体项目目录结构 2.创建普通javamaven项目。 3.导入依赖&#xff0c;改造成springboot项目 4.配置启动类 5.创建service接口及其实现类 6.创建接口Mapper 7.配置数据源 8.创建数据库表 二、使用MP&#xff08;mybatisplus&#xff09;的分页插件 二、使…

COMPOSER安装使用WIN下升级PHP-V

想用TP6使用phpspreadsheet但是说我PHP版本低&#xff0c;原来是PHP7.0 composer要求至少7.4 直接修改环境变量&#xff0c;把PHP目录切换到7.4 composer升级比较简单&#xff0c;在PHP目录下CMD然后官网的命令执行下即可 下面就可以在TP根目录下执行命令安装PHPSPREADSHEET…

Docker数据集与自定义镜像:构建高效容器的关键要素

目录 博客前言 一.数据卷 1.数据卷介绍 2.实战 宿主机和容器共享目录 容器和容器之间共享目录 二.自定义镜像 1.自定义镜像介绍 2.实战 2.1自定义centos&#xff0c;具备vim及ifconfig作用 构建镜像 通过镜像运行一个容器进行测试 2.2自定义tomact&#xff08;文件为…

【IO流系列】字符流练习(拷贝、文件加密、修改文件数据)

字符流练习 练习1&#xff1a;文件夹拷贝1.1 需求1.2 代码实现1.3 输出结果 练习2&#xff1a;文件加密与解密2.1 需求2.2 代码实现2.3 输出结果 练习3&#xff1a;修改文件数据&#xff08;常规方法&#xff09;3.1 需求3.2 代码实现3.3 输出结果 练习4&#xff1a;修改文件数…

CSP-201712-2-游戏

CSP-201712-2-游戏 解题思路 初始化变量&#xff1a;定义整数变量n和k&#xff0c;分别用来存储小朋友的总数和淘汰的特定数字。然后定义了num&#xff08;用来记录当前报的数&#xff09;和peopleIndex&#xff08;用来记录当前报数的小朋友的索引&#xff09;。 初始化小朋…

无法访问云服务器上部署的Docker容器(二)

说明&#xff1a;记录一次使用公网IP 接口地址无法访问阿里云服务接口的问题&#xff1b; 描述 最近&#xff0c;我使用Docker部署了jeecg-boot项目&#xff0c;部署过程都没有问题&#xff0c;也没有错误信息。部署完成后&#xff0c;通过下面的地址访问后端Swagger接口文档…

react useMemo 用法

1&#xff0c;useCallback 的功能完全可以由 useMemo 所取代&#xff0c;如果你想通过使用 useMemo 返回一个记忆函数也是完全可以的。 usecallback(fn,inputs)is equivalent to useMemo(()> fn, inputs). 区别是:useCallback不会执行第一个参数函数&#xff0c;而是将它返…

获取当前数据 上下移动

点击按钮 上下移动 当前数据 代码 // 出国境管理 登记备案人员列表 <template><a-row><a-col span"24"><a-card :class"style[a-table-wrapper]"><!-- 出国境 登记备案人员列表 --><a-table:rowKey"records >…

sql 注入 之sqli-labs/less-6 双注入,双引号报错注入

和第五关类似&#xff0c;只不过闭合符号是双引号 1&#xff0c;查数据库 1"and%20(updatexml(1,concat(0x7e,(select%20database()),0x7e),1))%20-- 2.查表 内容有多行&#xff0c;所以使用limit依次查询 1"and%20(updatexml(1,concat(0x7e,(select%20table_nam…

【Linux系统化学习】线程概念

目录 线程的概念 线程的引出 什么是线程 理解线程比进程更加的轻量化 线程的优点 现成的缺点 线程异常 线程用途 Linux进程VS线程 线程的简单现象 线程的概念 有关操作系统的书籍或者课本都会这样描述线程&#xff1a; 线程是比进程轻量化的一种执行流线程是进程内部…

利用小蜜蜂AI智能问答ChatGPT+AI高清绘图生成图文故事案例

利用小蜜蜂AI智能问答ChatGPTAI高清绘图生成图文故事案例 这段时间利用小蜜蜂AI网站做了一些编程、绘图以及数据分析方面的案例。再过几个月&#xff0c;我的大孙子就要出生了。我要用小蜜蜂AI智能问答和AI高清绘图为大孙子生成一个1-9的数字图文故事。 小蜜蜂AI网站可以扫如…

前端打包部署(黑马学习笔记)

我们的前端工程开发好了&#xff0c;但是我们需要发布&#xff0c;那么如何发布呢&#xff1f;主要分为2步&#xff1a; 1.前端工程打包 2.通过nginx服务器发布前端工程 前端工程打包 接下来我们先来对前端工程进行打包 我们直接通过VS Code的NPM脚本中提供的build按钮来完…

【HTML5】浏览器不能显示字体报错Failed to decode downloaded font问题解决

把网上的项目中字体通过链接保存下来在本地上使用&#xff0c;在本地服务器上运行站点发现&#xff0c;用Chrome浏览器访问的时候&#xff0c;出现错误提示不能正常显示字体&#xff0c;怎么解决呢&#xff0c;看看怎么搞。 文章目录 发现问题提示警告提示错误 字体检查打开文件…

Redisson限流算法

引入依赖 <dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.12.3</version> </dependency>建议版本使用3.15.5以上 使用 这边写了一个demo示例&#xff0c;定…

C++ //练习 10.7 下面的程序是否有错误?如果有,请改正。

C Primer&#xff08;第5版&#xff09; 练习 10.7 练习 10.7 下面的程序是否有错误&#xff1f;如果有&#xff0c;请改正。 (a) vector<int>vec; list<int> lst; int i;while(cin>>i)lst.push_back(i);copy(lst.cbegin(), lst.cend(), vec.begin());(b) …

Unity(第二十二部)官方的反向动力学一般使用商城的IK插件,这个用的不多

反向动力学&#xff08;Inverse Kinematic&#xff0c;简称IK&#xff09;是一种通过子节点带动父节点运动的方法。 正向动力学 在骨骼动画中&#xff0c;大多数动画是通过将骨架中的关节角度旋转到预定值来生成的&#xff0c;子关节的位置根据父关节的旋转而改变&#xff0c;这…

苍穹外卖学习 Day10 Day11 Day12

前言 用于记录苍穹外卖Day10、Day11、Day12的学习 Day10 订单状态定时处理 来电提醒 客户催单 订单状态定时处理 Spring Task Spring Task是一个任务调度工具&#xff0c;可以按照约定的时间自动执行某个代码逻辑&#xff08;定时自动执行某段Java代码&#xff09; cron表…

ElasticSearch之suggester API

写在前面 当我们在使用搜索引擎进行的查询到时候&#xff0c;如果是输入错误的话&#xff0c;搜索引擎会给出一些搜索建议&#xff0c;如下&#xff1a; 在es中也提供了类似的功能&#xff0c;叫做suggester API。 1&#xff1a;原理和种类 原理是将查询的信息分为很多个词…

Python并发编程:多线程-信号量,Event,定时器

一 信号量 信号量也是一把锁&#xff0c;可以指定信号量为5&#xff0c;对比互斥锁同一时间只能有一个任务抢到锁去执行&#xff0c;信号量同一时间可以有5个任务拿到锁去执行&#xff0c;如果说互斥锁是合租房屋的人去抢一个厕所&#xff0c;那么信号量就相当于一群路人争抢公…