网站服务器放置地查询,酒店网站制作公司,凡科商城是什么,ip可以用wordpressDay 32 贪心算法 Part03
今日任务
1005.K次取反后最大化的数组和 加油站 分发糖果
代码实现
1005.K次取反后最大化的数组和 这题有点思路#xff0c;和题解也差不多#xff0c;但是没完全通#xff0c;感觉很复杂#xff0c;无法下手 public int largestSumAfterKNeg…Day 32 贪心算法 Part03
今日任务
1005.K次取反后最大化的数组和 加油站 分发糖果
代码实现
1005.K次取反后最大化的数组和 这题有点思路和题解也差不多但是没完全通感觉很复杂无法下手 public int largestSumAfterKNegations(int[] nums, int k) {nums IntStream.of(nums).boxed().sorted((a, b) - Math.abs(b) - Math.abs(a)).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();}加油站 这题也是有点思路有两个问题需要想明白第一当totalSum0的时候此题一定有解第二当currentSum0的时候current之前的起始点一定是行不通的我也想到最大子数组的这种方法就是第一点没想明白无法下手 public int canCompleteCircuit(int[] gas, int[] cost) {int start 0;int currentSum 0;int totalSum 0;for (int i 0; i gas.length; i) {currentSum(gas[i] - cost[i]);totalSum(gas[i] - cost[i]);if (currentSum 0) {start i 1;currentSum 0;}}if (totalSum 0) return -1;return start;}分发糖果 完全想不出来的题 public int candy(int[] ratings) {int[] candy new int[ratings.length];candy[0] 1;for (int i 1; i ratings.length; i) {if (ratings[i] ratings[i - 1]) {candy[i] candy[i - 1] 1;} else {candy[i] 1;}}for (int i ratings.length - 2; i 0; i--) {if (ratings[i] ratings[i 1]) {candy[i] Math.max(candy[i 1] 1, candy[i]);}}return Arrays.stream(candy).sum();}今日总结
脑子有点混沌贪心就是各玩各的很多就是理解问题还差得远今天果然不出所料是一个大跌并且跌势没有减缓的情况下明天还是一个跌