1005.K次取反后最大化的数组和
class Solution {
public:
int largestSumAfterKNegations(vector<int>& nums, int k) {
for(int i=1;i<=k;i++){
sort(nums.begin(),nums.end());
nums[0] = -1*nums[0];
}
int s=0;
for(int i=0;i<nums.size();i++){
s+=nums[i];
}
return s;
}
};
134. 加油站
class Solution {
public:
int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {
int cursum = 0;
int totalsum=0;
int start = 0 ;
for(int 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;
return start;
}
};
135. 分发糖果
class Solution {
public:
int candy(vector<int>& ratings) {
vector<int> candy(ratings.size(),1);
for(int i=1;i<candy.size();i++){
if(ratings[i]>ratings[i-1]){
candy[i]=candy[i-1]+1;
}
}
for(int i=candy.size()-2;i>=0;i--){
if(ratings[i]>ratings[i+1]){
candy[i] = max(candy[i+1]+1,candy[i]);
}
}
return accumulate(candy.begin(),candy.end(),0);
}
};