题解 | #四数之和#

四数之和

https://www.nowcoder.com/practice/d5b74806fa104518903884e182f47e35

nSum问题,递归模板

import java.util.*;
public class Solution {
    public ArrayList> fournumber (ArrayList nums, int target) {
        Collections.sort(nums);
        // System.out.println(nums);
        return nSumTarget(nums, 4, 0, target);
    }
    private ArrayList> nSumTarget(ArrayList nums,int n,int start,int target){
        int sz = nums.size();
        ArrayList> res = new ArrayList();
        if(n<2 || sz < n){
            return res;
        }
        if(n==2){
            int low = start,high = sz-1;
            while(low<high){
                int sum = nums.get(low)+nums.get(high);
                int left = nums.get(low),right = nums.get(high);
                if(sum<target){
                    while(low<high && nums.get(low) == left)
                        low++;
                }else if(sum > target){
                    while(low<high && nums.get(high) == right)
                        high--;
                }else{
                    res.add(new ArrayList(Arrays.asList(left,right)));
                    while(low<high && nums.get(low) == left)
                        low++;
                    while(low<high && nums.get(high) == right)
                        high--;
                }
            }
        }else{
            int i = start;
            while(i<sz){
                int now = nums.get(i);
                ArrayList> sub = nSumTarget(nums,n-1,i+1,target-nums.get(i));
                for(ArrayList s:sub){
                    s.add(now);
                    res.add(s);
                }
                while(i<sz && nums.get(i) == now)
                    i++;
            }
        }
        return res;
    }
}
全部评论

相关推荐

07-09 15:55
门头沟学院 Java
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-09 12:05
点赞 评论 收藏
分享
湫湫湫不会java:先投着吧,大概率找不到实习,没实习的时候再加个项目,然后把个人评价和荣誉奖项删了,赶紧成为八股战神吧,没实习没学历,秋招机会估计不多,把握机会。或者说秋招时间去冲实习,春招冲offer,但是压力会比较大
点赞 评论 收藏
分享
07-09 18:33
门头沟学院 Java
这么逆天每年都有人去???&nbsp;填多益网申就是大型的服从性测试
鲁大牛:辅导员在群里发了这个公司我就申了一下。网申居然要写当场开摄像头写两篇不少于三百字的作文。太逆天了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务