题解 | #牛群的协作#
牛群的协作
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。
其实这题跟数组合并题目挺像的,只不多首先需要将数组进行排序,然后再进行数组合并,合并的条件是两个数组有公共的区间,合并不了说明还需要另外的特殊攻击次数才能够达到目的