「代码随想录算法训练营」第二十三天 | 贪心算法 part1

news/2024/9/24 7:22:26/文章来源:https://www.cnblogs.com/frontpen/p/18330357

455. 分发饼干

题目链接:https://leetcode.cn/problems/assign-cookies/
题目难度:简单
文章讲解:https://programmercarl.com/0455.分发饼干.html
视频讲解:https://www.bilibili.com/video/BV1MM411b7cq
题目状态:初次有贪心算法的总体概念,有点懵

思路:

先将饼干尺寸大的满足胃口大的小孩,直到遍历完。

代码:

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

376. 摆动序列

题目链接:https://leetcode.cn/problems/wiggle-subsequence/
题目难度:中等
文章讲解:https://programmercarl.com/0376.摆动序列.html
视频讲解:https://www.bilibili.com/video/BV17M411b7NS
题目状态:贪心好难,只能看题解,自己做一点思路也没有

思路:

记录一下每个元素的前后坡度(有正负的),然后判断前后坡度符号是否一致,如果不一致就加1,如果一致就跳过。
注意:当有平坡出现的时候,只需要记录一次,并且前坡只有在发生改变的时候在需要变化。

代码:

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

53. 最大子数组和

题目链接:https://leetcode.cn/problems/maximum-subarray/
题目难度:中等
文章讲解:https://programmercarl.com/0053.最大子序和.html
视频讲解:https://www.bilibili.com/video/BV1aY4y1Z7ya
题目状态:还是学习思路...

思路:

先遍历前面的和,当前面的和为负数的时候,那个前面所有的内容相加就对后面的元素没有作用,直接从后面元素开始,一直遍历结束。期间会记录所有遍历的最大值。

代码:

class Solution {
public:int maxSubArray(vector<int>& nums) {int count = 0;int res = INT_MIN;for(int i = 0; i < nums.size(); ++i) {count += nums[i];if(count > res) res = count;if(count <= 0) count = 0;}return res;}
};

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

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

相关文章

人工智能|利用人工智能自动找bug

简介 在程序员编程的过程中,产生Bug是一件稀松平常的事情,以前在编码的过程中提前找出Bug,需要通过单元测试、CodeReview等各种方式。 当今,人工智能技术的发展给软件开发和测试带来了许多机会。利用人工智能技术,可以开发出自动化的 bug 检测工具,从而提高软件质量和可靠…

Pentester Academy -Windows API Exploitation Recipes: Processes, Tokens and Memory RW 2017版本

早年为Pentester Academy(https://www.pentesteracademy.com/) ,如今为INE (https://ine.com/)002 安装VS社区版 https://visualstudio.microsoft.com/zh-hans/003 process listing api 正在运行的是什么:服务,AV,HIDS/IPS等 其他attack开始的点:进程注入,内存dump/修改,…

基于EasyTcp4Net开发一个功能较为完善的去持久化聊天软件

之前自己写了一篇介绍TCP的一些常用的功能介绍和特征,并且用代码做了示例,最终开发了一个EasyTcp4Net的TCP工具库,其最大的特色就是使用了微软提供的高性能库中的一些数据结构来处理TCP数据。 最近辞职待业在家,也没啥事做,就利用自己写的TCP通讯库基础上开发了一个示例的…

c语言其二

1.代码区:可读可执行 2.堆栈:(参数,局部变量,临时数据) 3.堆:(动态申请,大小可变)可读可写 5.常量区:只读 变量 变量的声明 全局变量 int a,b,c; //全局变量的声明 void Fun() { a = 10; //全局变量的赋值 b = 20; c = a; } 局部变量 void Fun() { …

[米联客-安路飞龙DR1-FPSOC] FPGA基础篇连载-15 SPI接收程序设计

软件版本:Anlogic -TD5.9.1-DR1_ES1.1 操作系统:WIN10 64bit 硬件平台:适用安路(Anlogic)FPGA 实验平台:米联客-MLK-L1-CZ06-DR1M90G开发板 板卡获取平台:https://milianke.tmall.com/ 登录"米联客"FPGA社区 http://www.uisrc.com 视频课程、答疑解惑! 1概述SP…

自写Json转换工具

前面写了简单的API测试工具ApiTools,返回的json有时需要做很多转换,于是开发了这个工具。 功能包括 1、json字符串转为表格,可以直观的展示,也可以复制,并支持转换后的表格点击列头进行排序,比较方便地定位数据。2、表格转为EXCEL,就是导出Excel文件,支持2003和2007格式…

[米联客-安路飞龙DR1-FPSOC] FPGA基础篇连载-13 SPI通信协议原理

SPI(串行外围设备接口)通信协议是一种高速、全双工、同步通信总线。它通过四根管脚实现控制和数据传输,广泛应用于EEPROM、Flash、RTC、ADC、DSP等设备,是一种重要的低速通讯协议。SPI协议具有高速、全双工、同步、主从式等特点,接口速度最高可达上百兆,因此不仅适用于低…

DiffSeq

目录概 符号说明 流程 代码 Gong S., Li M., Feng J., Wu Z. and Kong L. DiffuSeq: Sequence to sequence text generation with diffusion models. In International Conference on Learning Representations (ICLR), 2023概 本文提出了一种用于 Seq2Seq 的不需要 classifier…

嵌入式测试手册——基于NXP iMX6ULL开发板(2)

基于测试板卡:创龙科技TLIMX6U-EVM是一款基于NXP i.MX 6ULL的ARM Cortex-A7高性能低功耗处理器设计的评估板,由核心板和评估底板组成。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。评估板接口资源丰富,引出双路网口、双路RS485、双路CA…

广东注塑行业MES系统——优化生产管理的利器

注塑行业MES系统是优化生产管理的利器,具有以下优势和作用: 实现生产过程的数字化管理:注塑行业MES系统可以实现生产过程的数字化管理,实时监控生产数据、设备状态和生产进度,提高生产过程的可视化和透明度。提高生产效率:通过优化生产计划、资源调度和工艺流程,注塑MES…

嵌入式基础测试手册——基于NXP iMX6ULL开发板(4)

前 言 本文档适用开发环境: Windows开发环境:Windows 7 64bit、Windows 10 64bit 虚拟机:VMware15.1.0 Linux开发环境:Ubuntu18.04.4 64bit U-Boot:U-Boot-2020.04 Kernel:Linux-5.4.70 Linux SDK:5.4.70_2.3.0 基于测试板卡:创龙科技TLIMX6U-EVM是一款基于NXP i.MX 6…

Markdown 常用语法

上一篇简单介绍了 Markdown 是什么,以及如何使用,本篇就来详细说说 Markdown 的常见语法。上一篇简单介绍了 Markdown 是什么,以及如何使用,本篇就来详细说说 Markdown 的常见语法。 ‍ 注意,并不是所有编辑器,都支持所有的 Markdown 语法,如果遇到失效的也不必疑惑。 此…