1005.K次取反后最大化的数组和
文档和视频讲解:代码随想录(programmercarl.com)
状态:ac
用时:0.5h
思路:先按照绝对值从大到小将数组排序,然后从头开始把负数转换成整数,如果k没用完,再把绝对值最小的值反复取反。
代码:
134. 加油站
文档和视频讲解:代码随想录(programmercarl.com)
状态:未ac
用时:1h
思路:假设从i开始走,中间的油量只能支撑它走到j,那么i到j之间的位置都不可能到j的,因为如果假如i+1可以j+1,而i可以走到i+1,那么i就可以走到j+1,但是i只能走到j,这形成了悖论。因此i和j之间的数字不可能走到j之后,更不可能走一圈的。可以用一个cursum来计算每天的剩余油量,当小于0时候,表示走到这断油,可以重新计算cursum并更新start。在用一个totalsum计算整个数组的剩余油量总和,如果小于0表示总油量小于总消耗量,任何位置都不可能走一圈的。
代码:
135. 分发糖果
文档和视频讲解:代码随想录(programmercarl.com)
状态:未ac
用时:1h
思路:结果数组全部赋值1。先从左到右处理ratings数组右大于左的情况,分发糖果数量比左边大一即可。然后从右到左处理ratings数组左大于右的情况,此时取右边糖果数量加一和左边糖果数量的最大值。
代码:
注:左大于右的情况要从右到左处理,不能从左到右,因为如果是个递减的序列,结果上,i-1的数量要大于i,而i要大于i+1,也就是i-1和i的结果要使用i和i+1的结果。