题解 | #加起来和为目标值的组合(二)#

加起来和为目标值的组合(二)

https://www.nowcoder.com/practice/75e6cd5b85ab41c6a7c43359a74e869a

import java.util.*;
public class Solution {
    private  ArrayList<ArrayList<Integer>> res = new ArrayList<>();

    public ArrayList<ArrayList<Integer>> combinationSum2(int[] num, int target) {
        if (num == null || num.length < 1) {
            return res;
        }
        Arrays.sort(num);
        backtrack(num, 0, target, new ArrayList<>());
        return res;
    }

    private void backtrack(int[] num, int start, int target, List<Integer> list) {
        if (list.size() > 0 && target == 0) {
            res.add(new ArrayList<>(list));
            return;
        }
        for (int i = start; i < num.length; i++) {
            if (target - num[i] < 0) {
                break;
            }
            if (i > start && num[i] == num[i - 1]) {
                continue;
            }
            target -= num[i];
            list.add(num[i]);
            backtrack(num, i + 1, target, list);
            target += num[i];
            list.remove(list.size() - 1);
        }
    }
}

全部评论

相关推荐

拉丁是我干掉的:把上海理工大学改成北京理工大学。成功率增加200%
点赞 评论 收藏
分享
微风不断:兄弟,你把四旋翼都做出来了那个挺难的吧
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务