1005. K 次取反后最大化的数组和
题目链接:1005. K 次取反后最大化的数组和 - 力扣(LeetCode)
题目难度:简单
代码:
class Solution {
public int largestSumAfterKNegations(int[] nums, int k) {
Arrays.sort(nums);
for(int i=0;i<nums.length&&k>0;i++){
if(nums[i]<0){
nums[i]=-nums[i];
k--;
}
}
if(k%2==1){
Arrays.sort(nums);
nums[0]=-nums[0];
}
int sum=0;
for(int num:nums){
sum+=num;
}
return sum;
}
}
134. 加油站
题目难度:中等
代码:
class Solution {
public int canCompleteCircuit(int[] gas, int[] cost) {
int sum=0;
int min=0;
for(int i=0;i<gas.length;i++){
sum+=(gas[i]-cost[i]);
min=Math.min(sum,min);
}
if(sum<0) return -1;
if(min>=0) return 0;
for(int i=gas.length-1;i>=0;i--){
min+=(gas[i]-cost[i]);
if(min>=0) return i;
}
return -1;
}
}
135. 分发糖果
题目难度:困难
代码:
class Solution {
public int candy(int[] ratings) {
int len=ratings.length;
int[] candyVec=new int[len];
candyVec[0]=1;
for(int i=1;i<len;i++)
candyVec[i]=ratings[i]>ratings[i-1]?candyVec[i-1]+1:1;
for(int i=len-2;i>=0;i--){
if(ratings[i]>ratings[i+1]){
candyVec[i]=Math.max(candyVec[i+1]+1,candyVec[i]);
}
}
int ans=0;
for(int candy:candyVec)
ans+=candy;
return ans;
}
}
860. 柠檬水找零
题目链接:860. 柠檬水找零 - 力扣(LeetCode)
题目难度:简单
代码:
class Solution {
public boolean lemonadeChange(int[] bills) {
int five=0,ten=0;
for(int i=0;i<bills.length;i++){
if(bills[i]==5)
five++;
if(bills[i]==10){
five--;
ten++;
}
if(bills[i]==20){
if(ten>0){
ten--;
five--;
}else{
five-=3;
}
}
if(five<0||ten<0) return false;
}
return true;
}
}