Java 题解 | #牛群的协作#
牛群的协作
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, (a, b) -> a[0] - b[0]);
int left = 0, right = 0, ans = 0, n = cow_ranges.length;
while (left < n) {
int end = cow_ranges[left][1];
while (right < n && cow_ranges[right][0] <= end) {
end = Math.min(end, cow_ranges[right][1]);
++right;
}
left = right;
++ans;
}
return ans;
}
}
编程语言是 Java。
该题考察的知识点包括:
- 数组排序:使用
Arrays.sort()对二维数组进行排序。 - 双指针:通过两个指针
left和right来追踪区间的起始和结束位置,从而找到可以并行攻击的区间数量。
代码的简短文字解释:接收一个二维整数数组 cow_ranges 作为输入,表示一组区间。目标是找出可以并行攻击的区间数量。代码首先对输入的区间按照起始位置进行排序,然后使用双指针技巧来找出可以并行攻击的区间。通过迭代,找出所有满足条件的区间,并计算并行攻击的次数,最后返回结果。

