贪心算法(四)

news/2024/11/24 12:10:24/

4.更多练习题

4)力扣https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/这道题运用贪心算法,就是每天只考虑与前一天的差价,只要差价大于零,从局部最优来考虑,就应该卖出前一天的股票。这样可以得到全局最优解。

class Solution {
public:int maxProfit(vector<int>& prices) {int n = prices.size();int res = 0;for(int i=1;i<n;i++){res += max(prices[i]-prices[i-1], 0);}return res;}
};

5)

力扣https://leetcode.cn/problems/queue-reconstruction-by-height/这道题 的第二个属性指的是有多少比自己高,所以可以按照身高由高到低来重建队列。

处理当前元素时,插入的位置就是第二个属性的值,因为之前插入的人都比自己高。

另外,身高相同时,第二个元素值小的人,先进行插入。

class Solution {
public:vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {sort(people.begin(), people.end(),[&](vector<int>& a, vector<int>& b){if(a[0]==b[0] ) return a[1]<b[1];return a[0]>b[0];});vector<vector<int>> res;for(auto p : people){res.insert(res.begin()+p[1], p);}return res;}
};

6)力扣https://leetcode.cn/problems/non-decreasing-array/当出现第i个元素小于第i-1个元素时,有两种修改方法:

一是令第i个元素等于第i-1个元素

二是令第i-1个元素等于第i个元素

这样局部保证了非递减,而且对数列中其他元素影响最小。

贪心算法的运用在于,既然发现了局部的递减,那就立刻进行修改,因为只能修改一次,所以修改完再判断整个数列是否完全非递减,若满足则成功,若不满足则表示数列不符合题目要求。

class Solution {
public:bool checkPossibility(vector<int>& nums) {int n = nums.size();for(int i=1;i<n;i++){if(nums[i]<nums[i-1]){int t = nums[i];nums[i] = nums[i-1];if(judge(nums)){return true;}else{nums[i] = nums[i-1] = t;return judge(nums);}}}return true;}bool judge(vector<int>& nums){int n = nums.size();for(int i=1;i<n;i++){if(nums[i]<nums[i-1]){return false;}}return true;}
};


http://www.ppmy.cn/news/37365.html

相关文章

[JAVA]重写

1.重写的概念 重写&#xff0c;也被称为覆盖。重写是子类对父类的非静态&#xff0c;非private修饰&#xff0c;非final修饰&#xff0c;非构造的方法实现过程的重新编写。子类重写的方法的参数和返回值类型与父类的方法相同。 2.方法重写的规则 子类重写的方法与父类的参数…

让PyTorch训练速度更快,你需要掌握这17种方法

掌握这 17 种方法&#xff0c;用最省力的方式&#xff0c;加速你的 Pytorch 深度学习训练。近日&#xff0c;Reddit 上一个帖子热度爆表。主题内容是关于怎样加速 PyTorch 训练。原文作者是来自苏黎世联邦理工学院的计算机科学硕士生 LORENZ KUHN&#xff0c;文章向我们介绍了在…

python外篇(内存泄露)

目录 了解 循环引用造成的内存泄露 大量创建对象造成的内存泄漏 全局对象造成的内存泄露 不适当缓存造成的内存泄露 内存分析工具 了解 ### 以下为Python中可能会出现内存泄露的情况&#xff1a; (1) 循环引用&#xff1a;当两个或多个对象相互引用&#xff0c;造成…

JVM 堆

堆的核心概述 堆与进程 1 堆针对一个JVM进程来说是唯一的&#xff0c;一个进程只有一个JVM实例&#xff0c;一个JVM实例中就有一个运行时数据区&#xff0c;一个运行时数据区只有一个推和一个方法区。 2进程包含多个进程&#xff0c;他们是共享一个堆空间的。 3Java堆在JVM启动…

让你的作品更出色——词云Word Cloud的制作方法(基于python,WordCloud,stylecloud)

让你的作品更出色—— 词云Word Cloud的制作方法&#xff08;基于python) 本文目录&#xff1a; 一、词云的简介 二、 实现原理和流程 1、制作词云流程图 2、词云实现原理 三、 实现词云的方式 1、安装词云相关模块库 2、WordCloud库 3、stylecloud库 四、总结 一、词…

USB键盘实现——设备描述符(一)

文章目录设备描述符仓库地址获取设备描述符请求标准设备请求USB 控制端点收到的数据设备描述符返回设备描述符实现设备描述符数据设备描述符分析附 STM32 枚举日志设备描述符 设备描述符内容解析和 HID鼠标 一致。 仓库地址 仓库地址 获取设备描述符请求 标准设备请求 ty…

ROS开发环境搭建(Ubuntu22.04、ROS2 Humble)

1.ROS环境搭建简介 官方指导地址&#xff1a;http://docs.ros.org/ 笔者是2023年4月初开始学习ROS&#xff0c;本文为当时的过程记录。其他情况不在此文中表述。 上图是官方文档首页&#xff0c;秉持“要学就学新的”和“接受官方推荐” 原则。故选择Humble版本。 在安装指导…

【新】(2023Q2模拟题JAVA)华为OD机试 - 统计差异值大于相似值二元组个数

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:统计差异值大于相似值二元组个…