• 代码随想录第34天: 贪心part03


    力扣 1005.K次取反后最大化的数组和

    class Solution {
        public int largestSumAfterKNegations(int[] nums, int k) {
            // 将基本类型的int数组转换成IntStream,以便进行流操作。
            nums = Arrays.stream(nums)
                // 将IntStream中的int元素转换(装箱)为Integer对象,这是必须的因为后面的sorted方法需要对象来进行比较。
                .boxed()
                // 对流中的元素进行排序。使用自定义的比较器,该比较器基于元素的绝对值进行降序排序。
                // o1和o2是比较的两个元素,Math.abs(o2) - Math.abs(o1)计算结果如果为正数,则o2排在o1前面,实现降序。
                .sorted((o1, o2) -> Math.abs(o2) - Math.abs(o1))
                // 将流中的Integer对象转换回基本类型int,以便可以将流转换回数组。
                .mapToInt(Integer::intValue)
                // 将流中的元素收集到一个新的int数组中。
                .toArray();
    
            for(int i = 0; i < nums.length && k > 0; i++) {
                if(nums[i] < 0) {
                    nums[i] = nums[i] * -1;
                    k--;
                }
            }
            if(k == 0 || k % 2 == 0) {
                return Arrays.stream(nums).sum();
            }
            else {
                nums[nums.length - 1] = nums[nums.length - 1] * -1;
                return Arrays.stream(nums).sum();
            }    
        
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    力扣 134. 加油站

    class Solution {
        public int canCompleteCircuit(int[] gas, int[] cost) {
            int[] res = new int[gas.length];
            for(int i = 0; i < gas.length; i++) {
                res[i] = gas[i] - cost[i];
            }
            if(Arrays.stream(res).sum() < 0) {
                return -1;
            }
            else {
                int idx = 0;
                int sum = 0;
                while(idx < res.length) {
                    int i;
                    for(i = idx; i < res.length; i++) {
                        sum += res[i];
                        if(sum < 0) {
                            sum = 0;
                            idx = i + 1;
                            break;
                        }
                    }
                    if(i == res.length) return idx;
                }
            }
            return -1;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    力扣 135. 分发糖果

    class Solution {
        public int candy(int[] ratings) {
            int[] LToR = new int[ratings.length];
            LToR[0] = 1;
            for(int i = 1; i < ratings.length; i++) {
                if(ratings[i] > ratings[i - 1]) {
                    LToR[i] = LToR[i - 1] + 1;
                }
                else {
                    LToR[i] = 1;
                }
            }
            int[] RToL = new int[ratings.length];
            RToL[ratings.length - 1] = 1;
            for(int i = ratings.length - 2; i >= 0; i--) {
                if(ratings[i] > ratings[i + 1]) {
                    RToL[i] = RToL[i + 1] + 1;
                }
                else {
                    RToL[i] = 1;
                }
            }
            int[] result = new int[ratings.length];
            for(int i = 0; i < ratings.length; i++) {
                result[i] = Math.max(LToR[i], RToL[i]);
            }
            int sum = Arrays.stream(result).sum();
            return sum;
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
  • 相关阅读:
    log4j2.xml 获取当前系统属性
    设计链表复习
    JavaScript从入门到精通系列第二十二篇:JavaScript中的toString方法和JavaScript中的垃圾回收
    web大学生网页作业成品 响应式网站水果超市7页(html+css+javascript+jquery+bootstarp)
    SuperMap GIS基础软件天地图服务Q&A
    Koa学习1:初始化项目
    Python中Lambda用法
    【LeetCode刷题-滑动窗口】--992.K个不同整数的子数组
    在 Git Bash 中为 vim 设置 Dracula 配色
    Linux网络编程:UDP协议和TCP协议
  • 原文地址:https://blog.csdn.net/sevune/article/details/138174127