LeetCode 40 Combination Sum II(数组中求和等于target的所有组合)
Posted 伊甸一点
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 40 Combination Sum II(数组中求和等于target的所有组合)相关的知识,希望对你有一定的参考价值。
给定数组,数组中的元素均为正数,target也是正数。(数组中的元素可能有重复)
求出所有的满足求和等于terget的组合。
数组中的元素只能使用一次。(数组中重复的元素可以最多使用重复次数)
参考代码:
package leetcode_50; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /*** * * @author pengfei_zheng * 数组中求和等于target的所有组合 */ public class Solution40 { public List<List<Integer>> combinationSum2(int[] nums, int target) { List<List<Integer>> list = new ArrayList<>(); Arrays.sort(nums); backtrack(list, new ArrayList<>(), nums, target, 0); return list; } private void backtrack(List<List<Integer>> list, List<Integer> tempList, int [] nums, int remain, int start){ if(remain < 0) return; else if(remain == 0) list.add(new ArrayList<>(tempList)); else{ for(int i = start; i < nums.length; i++){ if(i > start && nums[i] == nums[i-1]) continue; // skip duplicates tempList.add(nums[i]); backtrack(list, tempList, nums, remain - nums[i], i + 1); tempList.remove(tempList.size() - 1); } } } }
以上是关于LeetCode 40 Combination Sum II(数组中求和等于target的所有组合)的主要内容,如果未能解决你的问题,请参考以下文章
[LeetCode] 40. Combination Sum II
[LeetCode] 40. Combination Sum II
Leetcode 40: Combination Sum II