题解 | #找到满足条件的牛群组合#
找到满足条件的牛群组合
https://www.nowcoder.com/practice/8b9ba0f65fa0442b9808a24a18c6462d
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @param target int整型
* @return int整型二维数组
*/
public static int[][] findThreeCows (int[] nums, int target){
// write code here
int init =0;
Arrays.sort(nums);
LinkedList<int[]> linkedList = new LinkedList<>();
while (init<nums.length-2){
if(init>=1 && nums[init]==nums[init-1]){
init++;
continue;
}
int left = init+1;
int right = nums.length-1;
while (left<right){
if(nums[left]+nums[right]==target-nums[init]){
linkedList.add(new int[]{nums[init],nums[left],nums[right]});
left++;
right--;
}else if(nums[left]+nums[right]>target-nums[init]){
right--;
}else if(nums[left]+nums[right]<target-nums[init]){
left++;
}
}
init++;
}
int[][] arr = new int[linkedList.size()][];
for(int i=0;i<linkedList.size();i++){
arr[i] = linkedList.get(i);
}
return arr;
}
}
本题考察的是三指针的应用,所用编程语言是java。首先对数组进行排序
三指针我可以固定第一个指针,然后另外两个指针进行移动。就变成了求两个数的和等于目标值,题目就比较简单了

