自己建设网站不会咋办呀,成立公司合作协议书范本,网站建设与排名,网上平台1005.K次取反后最大化的数组和
题目 文章讲解 视频讲解
思路#xff1a;要按照绝对值大小进行排序#xff0c;负数转换后还不到k个选择最小值不断反转
class Solution {public int largestSumAfterKNegations(int[] nums, int k) {nums IntStream.of(nums).boxed().sorte…1005.K次取反后最大化的数组和
题目 文章讲解 视频讲解
思路要按照绝对值大小进行排序负数转换后还不到k个选择最小值不断反转
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();for (int i 0; i nums.length; i) {if (nums[i] 0 k 0) {nums[i] -nums[i];k--;}}if (k % 2 1)nums[nums.length - 1] -nums[nums.length - 1];return Arrays.stream(nums).sum();}
}134. 加油站
题目 文章讲解 视频讲解
思路计算每个对应加油站位置的差值计算当前总和小于0则从i1重新开始。总的差值若小于0则无法环路一周
class Solution {public int canCompleteCircuit(int[] gas, int[] cost) {int curSum 0;int totalSum 0;int start 0;for (int i 0; i gas.length; 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. 分发糖果
题目 文章讲解 视频讲解
思路先从前向后遍历如果右边左边当前值为左边值1小于左边就设置为1从后向前遍历如果左边大于右边当前值为右边1最后选定的值为两次遍历中最大的
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], candyVec[i 1] 1);}}int ans 0;for (int num : candyVec) {ans num;}return ans;}
}