1005.K次取反后最大化的数组和
class Solution:
def largestSumAfterKNegations(self, nums: List[int], k: int) -> int:
i=0
while(i<k):
nums.sort()
nums[0]=-nums[0]
nums.sort()
i+=1
return sum(nums)
134. 加油站
#伪代码
cursum=0
totalsum=0
start=0
for(i=0;i<gas.size();i++){
cursum+=(gas[i]-cost[i])
totalsum+=(gas[i]-cost[i])
if(cursum<0):
start=i+1;
cursum=0;
}
if(totalsum<0): return -1;
else:
return start;
class Solution:
def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int:
res=[0]*len(gas)
cursum=0
start=0
for i in range(len(gas)):
res[i]=gas[i]-cost[i]
if sum(res)<0:
return -1
else:
for i in range(len(gas)):
cursum+=res[i]
if(cursum<0):
start=i+1
cursum=0
return start
135. 分发糖果
#伪代码
先确定一边,再确定另一边
vector<int> Candy(rating.size(),1);
for(i=1;i<rating.size();i++){
if(rating[i]>rating[i-1])
Candy[i]=Candy[i-1]+1;
}
for(i=rating.size()-2;i>=0;i--){
if(rating[i]>rating[i+1])
Candy[i]=max(Candy[i+1]+1,Candy[i])
}
for(i=0;i<Candy.size();i++){
result+=Candy[i]}
return result
class Solution:
def candy(self, ratings: List[int]) -> int:
candy=[1]*len(ratings)
for i in range(1,len(ratings)):
if(ratings[i]>ratings[i-1]):
candy[i]=candy[i-1]+1
for i in range(len(ratings)-2,-1,-1):
if(ratings[i]>ratings[i+1]):
candy[i]=max(candy[i+1]+1,candy[i])
return sum(candy)