目录
学习目标
- 1005.K次取反后最大化的数组和
- 134. 加油站
- 135. 分发糖果
学习内容
1005.K次取反后最大化的数组和
class Solution:
def largestSumAfterKNegations(self, nums: List[int], k: int) -> int:
nums.sort()
n = len(nums)
i = 0
res = 0
while i<n and nums[i]<0 and k:
nums[i] = -nums[i]
i+=1
k-=1
if k %2==0:
res = sum(nums)
else:
if i!=n:
res = sum(nums)-2*min(nums[i],nums[i-1])
else:
res = sum(nums)-2*nums[i-1]
return res
134. 加油站
134. 加油站 - 力扣(LeetCode)
https://leetcode.cn/problems/gas-station/
class Solution:
def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int:
n = len(gas)
index = 0
tmp_gas = 0
total_gas = 0
for i in range(n):
tmp_gas = tmp_gas+gas[i]-cost[i]
total_gas = total_gas+gas[i]-cost[i]
if tmp_gas<0:
index=i+1
tmp_gas = 0
if total_gas>=0:return index
return -1
135. 分发糖果
class Solution:
def candy(self, ratings: List[int]) -> int:
n = len(ratings)
tmp = [1]*n
for i in range(1,n):
if ratings[i]>ratings[i-1]:
tmp[i]=tmp[i-1]+1
#print(tmp)
for i in range(n-1,0,-1):
if ratings[i]<ratings[i-1] and tmp[i-1]<=tmp[i]:
tmp[i-1] = tmp[i]+1
#print(tmp)
return sum(tmp)