2025-3-10 leetcode刷题情况(贪心算法--中等题目)

一、122.买卖股票的最佳时机Ⅱ

1.题目描述

给你一个整数数组 prices,其中 prices[i]表示某支股票第 i 天的价格.
在每一天,你可以决定是否购买和/或出售股票。你在任何时候最多只能持有一股股票。你也可以先购买,然后在同一天出售。返回你能获得的最大利润。

2.代码

3.思路

这里用到贪心算法,先定义一个result为0,然后通过for循环遍历prices里面的数据,通过用当前值减去前一个值和0进行比较 看是否能赚钱,将正数的结果不断相加最后等于result,遍历完成以后就可以返回result。

二、135.分发糖果

1.题目描述

2.代码

3.思路

首先创建一个长度与 ratings 数组相同的 candyVec 数组,用于记录每个孩子应得的糖果数,并将第一个孩子的糖果数初始化为 1。从左到右遍历:从数组的第二个元素开始,若当前孩子的评分比前一个孩子高,则当前孩子的糖果数为前一个孩子的糖果数加 1;否则,当前孩子的糖果数为 1。此步骤确保每个孩子如果比左边孩子评分高,得到的糖果数也更多。从右到左遍历:从数组的倒数第二个元素开始向左遍历,若当前孩子的评分比右边孩子高,则取当前孩子原本的糖果数和右边孩子糖果数加 1 中的最大值作为当前孩子新的糖果数。这一步保证每个孩子如果比右边孩子评分高,得到的糖果数也更多。遍历 candyVec 数组,将所有孩子的糖果数累加,得到所需的最少糖果总数并返回。

三、406.根据身高重建队列

1.题目描述

2.代码

3.思路

使用 Arrays.sort 方法对 people 数组进行排序。排序规则为:优先按照身高从大到小排序,如果身高相同,则按照 k 值从小到大排序。这样排序的原因是,先安排身高高的人,后续插入身高低的人时不会影响前面高个子的 k 值条件。创建一个 LinkedList 类型的队列 que,用于存储最终的排队顺序。遍历排序后的 people 数组,对于每个元素 p,根据其 k 值将其插入到队列 que 的第 p[1] 个位置。由于之前已经按身高从大到小排序,所以此时插入到第 p[1] 个位置能保证前面有 p[1] 个身高大于或等于 p[0] 的人。将队列 que 转换为二维数组并返回,该数组即为重建后的排队顺序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值