网站备案收费吗,施工企业甲乙资质,太原网站建设地图,职业生涯规划大赛点评1005. K 次取反后最大化的数组和 - 力扣#xff08;LeetCode#xff09;
题解#xff1a;
一开始有点理解错他的意思#xff0c;以为是i是题目中会给出#xff0c;所以一开始没有什么思路#xff0c;然后当看了题解之后#xff0c;就知道了原来i是自己订的#xff0c…1005. K 次取反后最大化的数组和 - 力扣LeetCode
题解
一开始有点理解错他的意思以为是i是题目中会给出所以一开始没有什么思路然后当看了题解之后就知道了原来i是自己订的到时候自己找就可以我的思路是先按照绝对值的大小给他排列出来然后给他遍历负数就给他变成正数当没负数的时候再变小的正数这就是贪心的思想由局部最小推出整体最小 class Solution {public int largestSumAfterKNegations(int[] nums, int k) {nums IntStream.of(nums).boxed().sorted((o1,o2) - Math.abs(o2)-Math.abs(o1)).mapToInt(Integer::intValue).toArray();int len nums.length;for(int i 0;i len;i){if(nums[i]0 k0){nums[i] -nums[i];k--;}}if(k%21){nums[len-1] -nums[len-1];}return Arrays.stream(nums).sum();}
}
134. 加油站 - 力扣LeetCode
这个题目一开始并不是很明白看了题解之后发现有三种情况第一种情况就是当加油站的油的总和小于消耗的油的话就不会绕圈一周当总和大于等于0的时候就返回0 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(sum0){return -1;}if(min0){return 0;}for(int i gas.length-1;i 0;i--){min (gas[i] - cost[i]);if(min0){return i;}}return -1;}
}
135. 分发糖果 - 力扣LeetCode
该题的思路就是分两种情况就是先从左往右比如果右边的数比左边的大就加一然后就反过来遍历如果左边的数比右边的数大就加一 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){if(ratings[i]ratings[i-1]){candyVec[i] candyVec[i-1]1;}else{candyVec[i] 1;}}for(int i len-2;i0;i--){if(ratings[i]ratings[i1]){candyVec[i] Math.max(candyVec[i],candyVec[i1]1);}}int ans 0;for(int num : candyVec){ans num;}return ans;}
}