代码随想录day24:贪心part2

ops/2024/10/10 16:59:22/

121. 买卖股票的最佳时机

class Solution {public int maxProfit(int[] prices) {int ans = 0;int minPrice = prices[0];for(int p : prices){ans = Math.max(ans, p - minPrice);minPrice = Math.min(p, minPrice);}return ans;}
}

运用前缀和思想,

从左到右枚举卖出价格 prices[i],那么要想获得最大利润,我们需要知道第 i 天之前,股票价格的最小值是什么,也就是从 prices[0] 到 prices[i−1] 的最小值,把它作为买入价格,这可以用一个变量 minPrice 维护。

请注意,minPrice 维护的是 prices[i] 左侧元素的最小值。

由于只能买卖一次,所以在遍历中,维护 prices[i]−minPrice 的最大值,就是答案。

from:灵茶山艾府

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

class Solution {public int maxProfit(int[] prices) {int res = 0;for(int i = 1; i < prices.length; i++){res += Math.max(prices[i] - prices[i - 1], 0);}return res;}
}

假如第 0 天买入,第 3 天卖出,那么利润为:prices[3] - prices[0]。

相当于(prices[3] - prices[2]) + (prices[2] - prices[1]) + (prices[1] - prices[0])。

此时就是把利润分解为每天为单位的维度,而不是从 0 天到第 3 天整体去考虑!

55. 跳跃游戏

class Solution {public boolean canJump(int[] nums) {if(nums.length == 1) return true;int cover = 0;for(int i = 0; i <= cover; i++){cover = Math.max(i + nums[i], cover);if(cover >= nums.length - 1) return true;}return false;}
}

很清楚,good

45. 跳跃游戏 II

class Solution {public int jump(int[] nums) {int res = 0;int cur = 0;int next = 0;for(int i = 0; i <= cur && i < nums.length - 1; i++){next = Math.max(next, i + nums[i]);if(i == cur){res++;cur = next;}}return res;}
}

不好理解

灵神的和卡哥的合起来能看懂,有很多细节。

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

class Solution {public int largestSumAfterKNegations(int[] nums, int k) {Arrays.sort(nums);for(int i = 0; i < nums.length && k > 0; i++){if(nums[i] < 0){nums[i] = -nums[i];k--;}}if(k % 2 == 1){Arrays.sort(nums);nums[0] = -nums[0];}int sum = 0;for(int num : nums){sum += num;}return sum;}
}

这题简单秒了


http://www.ppmy.cn/ops/123578.html

相关文章

Pikachu-Sql Inject-宽字节注入

基本概念 宽字节是相对于ascII这样单字节而言的&#xff1b;像 GB2312、GBK、GB18030、BIG5、Shift_JIS 等这些都是常说的宽字节&#xff0c;实际上只有两字节 GBK 是一种多字符的编码&#xff0c;通常来说&#xff0c;一个 gbk 编码汉字&#xff0c;占用2个字节。一个…

【微服务】链路追踪 - Micrometer(day9)

概述 引入 在微服务架构下&#xff0c;客户端一个请求不再仅仅通过一个后端服务和数据库服务就能返回响应&#xff0c;而是通过多个服务节点的协同调用才会产生最终的响应。因此&#xff0c;一个简单的请求就可能会形成一个复杂的分布式服务调用链路&#xff0c;链路中的任何…

云原生(四十七) | PHP软件安装部署

文章目录 PHP软件安装部署 一、PHP软件部署步骤 二、安装与配置PHP PHP软件安装部署 一、PHP软件部署步骤 第一步&#xff1a;安装 EPEL 仓库 与 Remi仓库 第二步&#xff1a;启用 Remi 仓库 第三步&#xff1a;安装 PHP、PHP-FPM 第四步&#xff1a;启动并开机启用 PH…

C/S模型的简单实现(UDP服务器)、本地套接字(sockaddr_un )的讲解

目录 1.UDP 1.1 UDP服务器 1.2 TPC和UDP的比较 1.3 C/S模型 -- UDP recvfrom、sendto server client 2.本地套接字 2.1 套接字比较 2.2 函数参数选用 2.3 server 2.4 client 2.5 实现对比 1.UDP 1.1 UDP服务器 UDP 是一种无连接的传输协议&#xff0c;类似于发送…

[C#]使用纯opencvsharp部署yolov11-onnx图像分类模型

【官方框架地址】 https://github.com/ultralytics/ultralytics.git 【算法介绍】 使用纯OpenCvSharp部署YOLOv11-ONNX图像分类模型是一项复杂的任务&#xff0c;但可以通过以下步骤实现&#xff1a; 准备环境&#xff1a;首先&#xff0c;确保开发环境已安装OpenCvSharp和必…

如何处理各行业的DDOS问题

分布式拒绝服务&#xff08;Distributed Denial of Service, DDoS&#xff09;攻击是网络安全领域最为常见且危害性极大的攻击方式之一。通过控制大量计算机、物联网终端或网络僵尸&#xff0c;攻击者能够向目标网站或服务器发送大量请求&#xff0c;从而耗尽其资源&#xff0c…

k8s杂记

在node节点使用kubectl&#xff1a; rootmultinode-demo-m02:/# ps aux | grep kubelet root 218 3.1 1.6 2066316 62516 ? Ssl 07:35 0:29 /var/lib/minikube/binaries/v1.30.0/kubelet --bootstrap-kubeconfig/etc/kubernetes/bootstrap-kubelet.conf --…

rabbitMq------信道管理模块

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言信道管理的字段申明/删除交换机申明/删除队列绑定/解绑消息的发布消息确认订阅队列取消订阅信道内存管理类打开信道关闭信道/获取指定信道 总结 前言 信道是在…