2026.2.9 K次取反最大数组和 & 加油站 & 分发糖果

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

python 复制代码
class Solution:
    def largestSumAfterKNegations(self, nums: List[int], k: int) -> int:
        res = 0
        nums.sort()
        min_num = float('inf')

        for i in range(len(nums)):
            if nums[i] >= 0:
                res += nums[i]
                min_num = min(min_num, nums[i])
            else:
                if k > 0:
                    res += nums[i] * -1
                    k -= 1
                    min_num = min(min_num, -1 * nums[i])
                else:
                    res += nums[i]
        if k > 0 and k % 2:
            res -= 2 * min_num
        
        return res

134. 加油站

python 复制代码
class Solution:
    def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int:
        total_sum = 0 # 记录总剩余油量
        start = 0 # 汽车开始位置
        cur_sum = 0 # 从start开始的当前剩余油量
        n = len(gas)
        for i in range(n):
            dif = gas[i] - cost[i]
            total_sum += dif
            cur_sum += dif
            if cur_sum < 0:
                start = i + 1
                cur_sum = 0
        
        if total_sum < 0:
            return -1         

        return start
        
        

135. 分发糖果

python 复制代码
class Solution:
    def candy(self, ratings: List[int]) -> int:
        n = len(ratings)
        candies = [1] * n
        
        # 1. 从左向右遍历:处理右边比左边评分高的情况
        for i in range(1, n):
            if ratings[i] > ratings[i - 1]:
                candies[i] = candies[i - 1] + 1
        
        # 2. 从右向左遍历:处理左边比右边评分高的情况
        for i in range(n - 2, -1, -1):
            if ratings[i] > ratings[i + 1]:
                # 贪心:取最大值以同时满足左右约束
                candies[i] = max(candies[i], candies[i + 1] + 1)
        
        return sum(candies)
相关推荐
林文韬3274 分钟前
逐位二进制拼接 → 翻转 → 去头零 → 消邻重
算法
变量未定义~5 分钟前
单点修改、区间求和(模板)、区间修改,单点查询(模板)
数据结构·算法
weixin_4684668515 分钟前
SURF 图像特征提取算法新手实战指南
图像处理·人工智能·算法·机器视觉·surf·sift
weixin_468466851 小时前
支持向量机新手实战指南
人工智能·python·算法·机器学习·支持向量机
weixin_468466852 小时前
机器学习之决策树新手实战指南
人工智能·python·算法·决策树·机器学习·ai
wanghu20242 小时前
ABC460_E题题解
c++·算法
z200509302 小时前
今日算法(回溯子集)
数据结构·算法·leetcode
ychqsq2 小时前
39.新年
经验分享·职场和发展
Hesionberger2 小时前
巧用异或找出唯一数字(多解)
java·数据结构·python·算法·leetcode
我命由我123452 小时前
UGC、PGC、PUGC 极简理解
经验分享·笔记·学习·职场和发展·求职招聘·职场发展·学习方法