代码随想录算法训练营第三十四天| 1005、134、135

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

文档和视频讲解:代码随想录(programmercarl.com)

状态:ac

用时:0.5h

思路:先按照绝对值从大到小将数组排序,然后从头开始把负数转换成整数,如果k没用完,再把绝对值最小的值反复取反。

代码:

图1



 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表示总油量小于总消耗量,任何位置都不可能走一圈的。

代码:

图2



135. 分发糖果 

文档和视频讲解:代码随想录(programmercarl.com)

状态:未ac

用时:1h

思路:结果数组全部赋值1。先从左到右处理ratings数组右大于左的情况,分发糖果数量比左边大一即可。然后从右到左处理ratings数组左大于右的情况,此时取右边糖果数量加一和左边糖果数量的最大值。

代码:

图3

注:左大于右的情况要从右到左处理,不能从左到右,因为如果是个递减的序列,结果上,i-1的数量要大于i,而i要大于i+1,也就是i-1和i的结果要使用i和i+1的结果。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容