一、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
转换为二维数组并返回,该数组即为重建后的排队顺序。