题解 | #牛牛的三元组问题#

牛牛的三元组问题

https://www.nowcoder.com/practice/72c6d735fb1144a2ba162976a4510839

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型一维数组 
     * @return int整型二维数组
     */
    public int[][] findTriplets (int[] nums) {
        // write code here
         List<int[]> res = new ArrayList<>();
         Arrays.sort(nums);
         int l = nums.length;
         int rem =nums[0]-1;
        for(int i=0;i<l-2;i++){
            if(rem==nums[i]) continue;
            int t = -nums[i];
            rem = nums[i];
            int rem2 = nums[i]-1;
            for(int j=i+1;j+1<l;j++)
            {
                if(nums[j]==rem2)continue;
                rem2=nums[j];
                int tar = t-nums[j];
                int index = findNumb(nums,j+1,l-1,tar);
                if(index>0&&index<=l)
                {
                    int[] e = new int[]{nums[i],nums[j],nums[index]};
                    res.add(e);
                }
            }
        }
        int[][] resA = new int[res.size()][3];
        res.toArray(resA);
        return resA;
    }
    int findNumb(int[] arr,int s,int e,int t){
        if(s>e) return -1;
        int r = (s+e)/2;
        if(t<arr[r])return findNumb(arr,s,r-1,t);
        else if(t>arr[r]) return findNumb(arr,r+1,e,t);
        else return r;
    }
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务