题解 | #牛群的协作#

牛群的协作

https://www.nowcoder.com/practice/c065b35c5cff41429edbd6484096d708

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param cow_ranges int整型二维数组
     * @return int整型
     */
    public int minParallelAttacks (int[][] cow_ranges) {
        // write code here
        Arrays.sort(cow_ranges, new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                if (o1[0] > o2[0]) {
                    return 1;
                } else if (o1[0] == o2[0]) {
                    return o1[1] - o2[1];
                } else {
                    return -1;
                }
            }
        });
        int left = cow_ranges[0][0];
        int right = cow_ranges[0][1];
        int count = 0;
        for (int i = 1; i < cow_ranges.length; i++) {
            if (cow_ranges[i][0] > right) {
                left = cow_ranges[i][0];
                right = cow_ranges[i][1];
                count++;
            } else {
                left = Math.max(left, cow_ranges[i][0]);
                right = Math.min(right, cow_ranges[i][1]);
            }
        }
        return count + 1;
    }

}

本题考察的知识点是贪心算法,所用编程语言是java。

其实这题跟数组合并题目挺像的,只不多首先需要将数组进行排序,然后再进行数组合并,合并的条件是两个数组有公共的区间,合并不了说明还需要另外的特殊攻击次数才能够达到目的

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务