代码随想录打卡Day28

今天的题目还是感觉有难度,前三道题都想不出来思路,直接看讲解去了。。。贪心的难题真的好难想出来。

122.买卖股票的最佳时机II

这道题用贪心解很巧妙。涉及到一个数学技巧,从第i天买入,第j天卖出,所获得的利润为prices[j] - pricees[i],这个可以裂项为(prices[j] - prices[j - 1]) + (prices[j - 1] - prices[j - 2] )+ …+ prices[i + 1] - prices[i],要使总利润尽可能地大,肯定要让中间的每个小括号中的值为正数,不能为负数,所以遍历prices数组时统计当前位置与前一个位置的元素之差,如果为正则将这个差加入到结果中,就是让每一天相对于前一天的利润为正即可。

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

55. 跳跃游戏

这道题目确实是想不出来,看完讲解后感觉确实巧妙,本题的核心就在于不断地维护从起点出发,经过若干次跳跃后所能达到的最远距离,如果最远距离达到了数组末端则直接return true,否则循环结束后返回false,另外,循环的结束条件不应该是i到达数组末端,因为有些情况的数组根本达不到末端,i到达最大覆盖范围的边缘就应该结束循环。

class Solution {
public:bool canJump(vector<int>& nums) {int cover = 0;for(int i = 0; i <= cover; i++){cover = max(i + nums[i], cover); //cover始终维护从起点出发所能达到的最大范围if(cover >= nums.size() - 1)return true;}return false;}
};

45.跳跃游戏II

有了上一道题的基础依然做不出这道题。。。无语。。这道题比上一道题复杂很多,题目保证所给的数组都能跳到末尾,所以我们需要考虑用最少的步数跳到终点,这道题也是需要用next来维护最远距离,由于这道题一定能跳到终点,所以循环的终止条件就是i < nums.size(),用current记录当前位置,next即为下一次跳跃的目的地,当i追上current时,我们就需要进行下一次跳跃,然后current移动到next的位置上,next的更新方式与上一题相同。

class Solution {
public:int jump(vector<int>& nums) {int result = 0;int current = 0;int next = 0;for(int i = 0; i < nums.size(); i++){next = max(next, i + nums[i]);  //更新维护最大覆盖范围if(i == current){  //已经遍历到当前的最大覆盖范围边缘if(i != nums.size() - 1){result++;current = next;if(current >= nums.size() - 1) //移动到数组尽头break;}else break;}}return result;}
};

1005.K次取反后最大化的数组和

这道题目比较简单,就是总共循环k次,每次循环中都将数组中的最小值取反(因为只有将最小值取反才能保证给总和带来的损失是最小的),循环结束后计算数组中元素总和返回即可。

class Solution {
public:int largestSumAfterKNegations(vector<int>& nums, int k) {while(k > 0){auto minIt = min_element(nums.begin(), nums.end());(*minIt) *= -1;k--;}return accumulate(nums.begin(), nums.end(), 0);}
};

贪心尊嘟好难!!

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

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

相关文章

面试必问:Java 类加载过程

java 类加载过程主要分为加载、链接和初始化三个阶段&#xff0c;六个关键步骤&#xff1a;加载、验证、准备、解析、初始化。 加载阶段&#xff08;Loading&#xff09; 加载时类加载的第一个过程&#xff0c;在这个阶段&#xff0c;将完成以下三件事情&#xff1a; 1&#…

基于Springboot的鲜花销售网站的设计与实现

项目描述 这是一款基于Springboot的鲜花销售网站的系统 模块描述 鲜花销售系统 1、用户 登录 在线注册 浏览商品 鲜花搜索 订购商品 查询商品详情 水果分类查看 水果加购物车 下单结算 填写收货地址 2、管理员 登录 用户管理 商品管理 订单管理 账户管理 截图

项目经理应该学习pmp还是cspm?

职场竞争激烈&#xff0c;项目管理专业人才在各个行业中的作用越来越凸显出来。在23年之前&#xff0c;我国关于通用项目管理人才的培养更多依赖于国外的PMP认证&#xff0c;缺少自主的认证评价标准和体系。 为了弥补这一空缺&#xff0c;基于国内的项目管理发展需求&#xff…

西门子博途零基础学PLC必会的100个指令

#西门子##PLC##自动化##工业自动化##编程##电工##西门子PLC##工业##制造业##数字化##电气##工程师# 工控人加入PLC工业自动化精英社群 工控人加入PLC工业自动化精英社群

OpenMV——色块追踪

Python知识&#xff1a; 1.给Python的列表赋值&#xff1a; 定义一个元组时就是 元组a (1,2,…) 元组中可以只有一个元素&#xff0c;但是就必须要加一个 “ , ” 如 a (2,) 而列表的定义和元组类似&#xff0c;只是把()换成[]: #那么下面的colour_1 ~ 3属于元组&#xf…

(计算机网络)运输层

一.运输层的作用 运输层&#xff1a;负责将数据统一的交给网络层 实质&#xff1a;进程在通信 TCP&#xff08;有反馈&#xff09;UDP&#xff08;无反馈&#xff09; 二.复用和分用 三. TCP和UDP的特点和区别 进程号--不是固定的 端口号固定--mysql--3306 端口--通信的终点 …

苹果的“AI茅”之路只走了一半

今年苹果发布会最大的亮点&#xff0c;也许是和华为“撞档”&#xff0c;又或者是替腾讯“发布”新手游&#xff0c;但肯定不是iPhone 16。 9月10日&#xff0c;苹果秋季新品发布会与华为见非凡品牌盛典相继举行&#xff0c;iPhone 16系列也与HUAWEI Mate XT同日发布。 不过&…

传统CV算法——特征匹配算法

Brute-Force蛮力匹配 Brute-Force蛮力匹配是一种简单直接的模式识别方法&#xff0c;经常用于计算机视觉和数字图像处理领域中的特征匹配。该方法通过逐一比较目标图像中的所有特征点与源图像中的特征点来寻找最佳匹配。这种方法的主要步骤包括&#xff1a; 特征提取&#xff…

js中【微任务】和【宏任务】长篇解读

在 JavaScript 中&#xff0c;理解微任务&#xff08;microtasks)和宏任务 (macrotasks)是掌握异步编程和事件循环&#xff08;Event Loop&#xff09;机制的关键。这两个概念影响了代码的执行顺序&#xff0c;特别是在涉及异步操作&#xff08;如 setTimeout、Promise、async/…

postgres--系统视图,表

pg_stat_all_tables 累积统计系统-监控数据库活动 pg_stat_all_tables是一个系统视图&#xff0c;它为当前数据库中的每个表&#xff08;包括TOAST表&#xff09;提供一行数据。显示了关于特定表的访问统计信息&#xff0c;比如访问次数等。pg_stat_user_tables和pg_stat_sys_…

根据NVeloDocx Word模板引擎生成Word(三)

基于永久免费开放的《E6低代码开发平台》的Word模版引擎NVeloDocx&#xff0c;实现根据Word模版生成Word文件&#xff0c;前面2篇已经非常详细介绍了《主表单字段》&#xff0c;《子表记录循环输入到表格》。那这一篇我们就介绍插入单张图片、二维码&#xff0c;条形码等等&…

python-网页自动化(三)

如果遇到使用 ajax 加载的网页&#xff0c;页面元素可能不是同时加载出来的&#xff0c;这个时候尝试在 get 方法执行完 成时获取网页源代码可能并非浏览器完全加载完成的页面。所以&#xff0c;这种情况下需要设置延时等待一定时间&#xff0c;确保全部节点都加载出来。 那么&…

邦飞利减速机有哪些系列

邦飞利减速机拥有多个系列&#xff0c;以满足不同领域和场景的需求。以下是邦飞利减速机的一些主要系列&#xff1a; W系列蜗轮蜗杆减速机&#xff1a; 如W63、W75、W86、W110等型号&#xff0c;广泛应用于各种需要减速传动的设备中。VF系列微型蜗轮蜗杆减速机&#xff1a; 包…

搜维尔科技:AcuMap - 针灸模拟VR训练解决方案

AcuMap第一个针灸VR训练解决方案。全面且医学上准确的人体映射&#xff0c;其中 14 条经络和 361 个穴位以 3D 形式可视化。您还可以在虚拟人体模型上模拟针刺。主要特点 - 可视化 14 条经络及其分支 - 基于 4 个主要类别的 361 个穴位&#xff1a;五行、危险穴位、补邪和特殊穴…

P5745【深基附B例】区间最大和

思路一&#xff1a;枚举区间头尾i&#xff0c;j&#xff0c;然后对i和j里面所有数字累加起来求和&#xff0c;再判断是否在不大于M的情况下最大。 #include<iostream> using namespace std; int a[8000005]; int main() {int n, M, ansm 0, ai, aj;cin >> n >…

【Petri网导论学习笔记】Petri网导论入门学习(一)

Petri 网导论 如需学习转载请注明原作者并附本帖链接&#xff01;&#xff01;&#xff01; 如需学习转载请注明原作者并附本帖链接&#xff01;&#xff01;&#xff01; 如需学习转载请注明原作者并附本帖链接&#xff01;&#xff01;&#xff01; 发现网上关于Petri网的学习…

【机器学习】从零开始理解深度学习——揭开神经网络的神秘面纱

1. 引言 随着技术的飞速发展,人工智能(AI)已从学术研究的实验室走向现实应用的舞台,成为推动现代社会变革的核心动力之一。而在这一进程中,深度学习(Deep Learning)因其在大规模数据处理和复杂问题求解中的卓越表现,迅速崛起为人工智能的最前沿技术。深度学习的核心是…

金智维K-RPA基本介绍

一、K-RPA基本组成 K-RPA软件机器人管理系统基于“RPAX”数字化技术打造&#xff0c;其核心系统由管理中心(Server)、设计器(Control)、机器人(Robot/Agent)三大子系统组成&#xff0c;各子系统协同工作&#xff0c;易于构建协同式环境。 管理中心&#xff08;Server&#xff…

【Linux 运维知识】Linux 编译后的内核镜像大小

Linux 内核镜像的大小取决于多个因素&#xff0c;包括内核的版本、启用的功能、模块的数量以及特定的编译配置。 以下是常见情况下不同内核镜像的大小范围&#xff1a; 1. 标准内核镜像大小 压缩后的内核镜像 (vmlinuz)&#xff1a; 压缩后的内核镜像文件&#xff0c;通常位于…

《MaPLe: Multi-modal Prompt Learning》论文解读

系列文章目录 文章目录 系列文章目录论文细节理解1、研究背景2、论文贡献3、方法框架4、研究思路5、实验6、限制 论文细节理解 预训练的视觉语言&#xff08;V-L&#xff09;模型&#xff0c;如CLIP&#xff0c;已经显示出对下游任务的出色泛化能力。然而&#xff0c;它们对输入…