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。首先对数组进行排序

三指针我可以固定第一个指针,然后另外两个指针进行移动。就变成了求两个数的和等于目标值,题目就比较简单了