LeetCode Combination Sum II
2015-09-28 23:37
302 查看
原题链接在这里:https://leetcode.com/problems/combination-sum-ii/
本题与Combination Sum非常相似,不同就在于本题不可以重复使用元素。其实只是递归时,start的参数更改为i+1即可。
Note: 1. 即使本题不可以使用重复元素但也需要小心res 里加了重复的item. e.g. target = 1, candidates = [1,1], res中会出现两个[1]. 所以在加入res前需校验res中是否已有相同item.
这个方法同样适用于Combination Sum.
AC Java:
本题与Combination Sum非常相似,不同就在于本题不可以重复使用元素。其实只是递归时,start的参数更改为i+1即可。
Note: 1. 即使本题不可以使用重复元素但也需要小心res 里加了重复的item. e.g. target = 1, candidates = [1,1], res中会出现两个[1]. 所以在加入res前需校验res中是否已有相同item.
这个方法同样适用于Combination Sum.
AC Java:
public class Solution { public List<List<Integer>> combinationSum2(int[] candidates, int target) { List<List<Integer>> res = new ArrayList<List<Integer>>(); if(candidates == null || candidates.length == 0){ return res; } Arrays.sort(candidates); helper(candidates,target,0,new ArrayList<Integer>(),res); return res; } private void helper(int[] candidates, int target, int start, List<Integer> item, List<List<Integer>> res){ if(target == 0){ if(!res.contains(item)){ res.add(new ArrayList<Integer>(item)); } return; } if(target < 0){ return; } for(int i = start; i<candidates.length; i++){ item.add(candidates[i]); helper(candidates,target-candidates[i],i+1,item,res); item.remove(item.size()-1); } } }
相关文章推荐
- Java程序,猜大小游戏
- 【算法C++】烙饼排序
- sql server alwayson 日志增大解决办法
- 国内国外最好的java开发论坛及站点[转]
- Unity3d 引擎原理详细介绍
- Python学习----进程和线程
- 商品检索系统
- AbstractQueuedSynchronizer 源码理解
- git reset
- TCP/IP详解卷1 读书笔记:第二章 链路层
- Androi Supporting Multiple Screens
- Light oj 1223 - Testing Mailboxes(记忆化)
- Git学习第三天
- Redis复制-续
- Codeforces Round #322 (Div. 2) E F
- system V与systemd
- Codeforces Round #322 (CF 581 ABCD)题解
- Linux系统编程---记录终端输入的命令
- 最快让你上手ReactiveCocoa之进阶篇
- Linux系统中的fork()函数详解