• 代码随想录第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
  • 相关阅读:
    在Visual Studio Code macOS上尽量用Clang编译C++
    【函数式编程】Java函数式编程学习
    Prometheus+Grafana可视化监控【Nginx状态】
    ROS系列(二):rosbag 中提取视频数据
    国密浏览器介绍与下载
    Mac终端常用命令
    Python真的是白学了
    Python灰帽编程——错误异常处理和面向对象
    [excel与dict] python 读取excel内容并放入字典、将字典内容写入 excel文件
    NNI自动调参工具
  • 原文地址:https://blog.csdn.net/sevune/article/details/138174127