代码随想录算法训练营第三十一天| 贪心算法理论基础、LeetCode455.分发饼干、LeetCode376. 摆动序列 、LeetCode53. 最大子序和

贪心算法理论基础:

贪心算法没有类似递归、回溯的套路。主要的思想可以理解为:用局部最优找全局最优。

#LeetCode 455. Assign Cookies

#LeetCode 455. 视频讲解:贪心算法,你想先喂哪个小孩?| LeetCode:455.分发饼干_哔哩哔哩_bilibili

题目需要考虑局部最优,在这个题目中是大饼干尽可能分给胃口大的,充分利用饼干尺寸,全局最优是分给尽可能多的小孩。

注意用if 来表示某个条件,如果用while 会出现重复计数的问题。

代码:

class Solution {public int findContentChildren(int[] g, int[] s) {Arrays.sort(g);Arrays.sort(s);int result = 0;int index = s.length - 1;for (int i = g.length - 1; i >= 0; i--) {if (index >= 0 && g[i] <= s[index]) {result ++;index --;}}return result;}
}

#LeetCode 376. Wiggle Subsequence

#LeetCode 376. 视频讲解:贪心算法,寻找摆动有细节!| LeetCode:376.摆动序列_哔哩哔哩_bilibili

如果使用prediff 表示第二个数字与第一个数字的差值,curdiff 表示第三个数字与第二个数字的差值,那么存在,

满足条件的情况1 :prediff(nums[i] - nums[i - 1]) >= 0 同时 curdiff(nums[i + 1] - nums[i]) < 0

满足条件的情况2 :prediff(nums[i] - nums[i - 1] <= 0 同时 curdiff(nums[i + 1] - nums[i]) > 0。

如果curdiff 等于0,那么代表后两个元素相同,是不满足摆动条件的,所以只有prediff 可以等于0。那么会存在:[1, 2, 2, 1] 这样的情况摆动是3,还有情况是[1, 2] 这样的摆动是2,还有一种是[1, 2, 2, 2, 3, 4] 这样的情况摆动是2。针对最后一个情况,采取的方式是:prediff = curdiff; 这行代码的执行是在满足摆动条件时。

代码:

class Solution {public int wiggleMaxLength(int[] nums) {int prediff = 0, curdiff = 0;int result = 1;for (int i = 0; i < nums.length - 1; i++) {curdiff = nums[i+1] - nums[i];if ((prediff >= 0 && curdiff < 0) || (prediff <= 0 && curdiff > 0)) {result ++;prediff = curdiff;}}return result;}
}

#LeetCode 53. Maximum Subarray

#LeetCode 53. 视频讲解:贪心算法的巧妙需要慢慢体会!LeetCode:53. 最大子序和_哔哩哔哩_bilibili

如果是[-2,-1],添加这一行代码:result = Math.max(sum, result); 这一行代码的意义是在每一次循环迭代中更新并维护最大子数组和的当前最优值。遇到连续和负数,才重新计算,而不是遇到负数就重新计算。如果遇到连续和负数,代表会造成最终的值变小。

代码:

class Solution {public int maxSubArray(int[] nums) {int result = Integer.MIN_VALUE;int sum = 0;if (nums.length == 1) {return nums[0];}for (int i = 0; i < nums.length; i++) {sum += nums[i];result = Math.max(sum, result);if (sum > 0) {if (result < sum) {result = sum;}}else {sum = 0;}}return result;}
}

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

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

相关文章

鲁教版六年级数学下册-笔记

文章目录 第五章 基本平面图形1 线段、射线、直线2 比较线段的长短3 角4 角的比较5 多边形和圆的初步认识第六章 整式的乘除1 同底数幂的乘法2 幂的乘方与积的乘方3 同底数幂的除法4 零指数幂与负整数指数幂5 整式的乘法6 平方差公式7 完全平方公式8 整式的除法 第七章 相交线与…

全域运营是割韭菜吗?常见套路有哪些?

随着全域运营赛道的全面开启&#xff0c;全域运营服务商和全域运营系统的数量迅速增加&#xff0c;持续激发赛道活力的同时&#xff0c;也让一些试图用全域运营割韭菜的人有了可趁之机。 值得庆幸的是&#xff0c;由于当前全域运营赛道刚兴起不久&#xff0c;因此&#xff0c;割…

Python | Leetcode Python题解之第110题平衡二叉树

题目&#xff1a; 题解&#xff1a; class Solution:def isBalanced(self, root: TreeNode) -> bool:def height(root: TreeNode) -> int:if not root:return 0leftHeight height(root.left)rightHeight height(root.right)if leftHeight -1 or rightHeight -1 or a…

C++青少年简明教程:If选择语句

C青少年简明教程&#xff1a;If选择语句 C中选择语句的语法是&#xff1a; if (条件) { 条件成立时需要执行的语句... } [else { 条件不成立时需要执行的语句... }] 说明&#xff1a; if后面使用一个括号&#xff0c;括号里是条件——关系表达式。 所谓的关系表达式就是判…

5.24学习记录

[FSCTF 2023]ez_php2 比较简单的pop链 <?php highlight_file(__file__); Class Rd{public $ending;public $cl;public $poc;public function __destruct(){echo "All matters have concluded";die($this->ending);}public function __call($name, $arg){for…

E1载波:一种2.048Mbps速率的PCM载波

E1载波的基本帧由32个子信道组成 帧长为256个bit,分为32个相等时隙&#xff0c;一个时隙为8个bit。256/328 时隙的编号为CH0~CH31 全帧包含256位,且每一帧用 125us时间传送 E1载波支持的数据传输效率为2.048Mbps&#xff0c;用PCM编码&#xff08;即 256bit/125us2.048Mbps…

Android 一个activity对应多个window

Android 一个activity对应多个window Android Activity 对应多个Window&#xff0c;Activity是应用程序的重要组成部分&#xff0c;在程序中的一个屏幕界面&#xff0c;用户可以进行交互操作。在Android应用程序中&#xff0c;Activity对应着一个Window&#xff0c;一个Activi…

微信小程序源码-基于Java后端的小区租拼车管理信息系统毕业设计(附源码+演示录像+LW)

大家好&#xff01;我是程序员一帆&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设…

洗完咖啡杯的最早时间

题目描述&#xff1a;给定一个数组arr&#xff0c;arr[i]代表第i号咖啡机泡一杯咖啡的时间&#xff0c;给定一个正数N&#xff0c;表示N个人在等着咖啡机&#xff0c;每台咖啡机只能一个一个的泡咖啡&#xff0c;其次&#xff0c;只有一台咖啡机可以洗杯子&#xff0c;一次只能…

1.OLED

1.基础知识

kotlin重复类编译报错解决

Duplicate class org.jetbrains.annotations.TestOnly found in modules annotations-12.0 (com.intellij:annotations:12.0) and annotations-13.0 (org.jetbrains:annotations:13.0) Go to the documentation to learn how to <a href"d.android.com/r/tools 参考链…

网络拓扑—DHCP服务配置

文章目录 DHCP服务搭建相关配置细节前提安装DHCP服务 DHCP服务搭建 相关配置细节前提 系统&#xff1a;Windows Server 2003 IP网段&#xff1a;10.0.0.0/24 三台机子&#xff1a; 普通PC机 DHCP服务器 路由器&#xff08;两块网卡&#xff0c;连接内外网&#xff09; //注…

覆盖索引与复合索引 小记

表 t_1 有一个复合索引 (user_id,create_time) 执行以下SQL SELECT COUNT(1) FROM t_1 WHERE create_time > 2024-01-10 AND create_time < 2024-05-25 ;看似不满足复合索引最左前缀的条件,但依然会使用复合索引(user_id,create_time), 满足覆盖索引. 但如果是执行以…

【Unity】Unity项目转抖音小游戏(三)资源分包,抖音云CDN

业务需求&#xff0c;开始接触一下抖音小游戏相关的内容&#xff0c;开发过程中记录一下流程。 使用资源分包可以优化游戏启动速度&#xff0c;是抖音小游戏推荐的一种方式&#xff0c;抖音云也提供存放资源的CDN服务 抖音云官方文档&#xff1a;https://developer.open-douyi…

基于灰狼优化算法优化支持向量机(GWO-SVM)时序预测

代码原理及流程 基于灰狼优化算法优化支持向量机&#xff08;GWO-SVM&#xff09;的时序预测代码的原理和流程如下&#xff1a; 1. **数据准备**&#xff1a;准备时序预测的数据集&#xff0c;将数据集按照时间顺序划分为训练集和测试集。 2. **初始化灰狼群体和SVM模型参数…

LeetCode 47.全排列 II

LeetCode 47.全排列 II 1、题目 题目链接&#xff1a;47. 全排列 II 给定一个可包含重复数字的序列 nums &#xff0c;按任意顺序 返回所有不重复的全排列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,2] 输出&#xff1a; [[1,1,2],[1,2,1],[2,1,1]]示例 2&#xff…

《基于Jmeter的性能测试框架搭建》改进一

《基于Jmeter的性能测试框架搭建》文末笔者提到了不少待改进之处&#xff0c;如下所示。 Grafana性能图表实时展现&#xff0c;测试过程中需实时截图形成测试报告&#xff0c;不够人性化。解决方案&#xff1a;自动生成测试报告并邮件通知。 Grafana性能图表需测试人员实时监控…

Big Demo Day第十三期活动即将启幕,Web3创新项目精彩纷呈,PEPE大奖等你抽取

5月28号在香港数码港 Big Demo Day第十三期 活动即将拉开帷幕&#xff0c;活动将汇集众多Web3领域的创新项目&#xff0c;为参会者带来一场科技与智慧交融的盛宴。在这里&#xff0c;你不仅能深入了解区块链、AI等前沿技术的最新应用&#xff0c;还能有机会赢取丰厚的PEPE大奖。…

免费wordpress中文主题

免费大图wordpress主题 首页是一张大图的免费wordpress主题模板。简洁实用&#xff0c;易上手。 https://www.jianzhanpress.com/?p5857 免费WP模板下载 顶部左侧导航条的免费WP模板&#xff0c;后台简洁&#xff0c;新手也可以下载使用。 https://www.jianzhanpress.com/…

sizeof的了解

32位编译器 qDebug() << "int:" << sizeof(int);qDebug() << "char:" << sizeof(char);qDebug() << "char*:" << sizeof(char*); 字节数&#xff1a; int: 4 char: 1 char*: 4 64位编译器 字节数&#…