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

京公网安备 11010502036488号