LeetCode216:Combination Sum III
来源:互联网 发布:山东大学威海网络 编辑:程序博客网 时间:2024/05/22 04:05
从1-9中取k个数和为n,且数不重复。
首先可能想到的是用一个boolean数组记录用过的数字,Boolean数组的下标+1即为数字。但这题我们发现,选取的数组是递增的,所以无需使用一个数组记录使用过的数字,我们取一个数然后往后枚举即可,当满足条件时,将当前的答案记录到集合中即可。
public class Solution { public List<List<Integer>> ans = new ArrayList<>(); public List<Integer> tmp = new ArrayList<>(); /** * * @param index 当前的数字 * @param k 选k个数 * @param target 所要求的和 * @param sum 目前已经得到的和 * @param tmp 临时存储 */ public void robot(int index , int k , int target,int sum,List<Integer> tmp){ //满足条件 加入答案集 if(target == sum && k==0){ ans.add(new ArrayList<>(tmp)); return; //不满足条件 跳出 }else if(sum>target || k<0) return; //index 表示当前的数字 for(int i=index; i <= 9;i++){ //加上当前的数字 tmp.add(i); //往后移动一位 sum加上当前的数字 可选取的数量k-1 robot(i+1,k-1,target,sum+i,tmp); //还原 tmp.remove(tmp.size()-1); } } public List<List<Integer>> combinationSum3(int k, int n) { ans.clear(); robot(1,k,n,0,tmp); return ans; }}
0 0
- LeetCode216:Combination Sum III
- LeetCode216. Combination Sum III
- LeetCode216:Combination Sum III
- leetcode216. Combination Sum III
- leetcode216. Combination Sum III
- LeetCode216. Combination Sum III
- Combination Sum II&III
- Combination Sum III
- LeetCode Combination Sum III
- Combination Sum III
- [LeetCode] Combination Sum III
- Combination Sum III
- 【leetcode】 Combination Sum III
- [leetcode] Combination Sum III
- [leetCode] Combination Sum III
- leetcode Combination Sum III
- leetcode--Combination Sum III
- Combination Sum III
- git# push
- hdu 1072 Nightmare dfs+剪枝
- POJ 2385 Apple Catching G++
- markdown语法
- @Transactional
- LeetCode216:Combination Sum III
- Android Studio 生成签名apk
- iOS中加入友盟页面统计
- 【深入分析JAVA多线程】(1)详解进程、线程以及线程安全
- sizeof与strlen的区别
- 【NAS】Samba基于security=user的匿名用户访问
- sql 利用游标遍历一个查询结果
- Session原理、生命周期及购物车功能的实现
- 硬盘的分区结构及其数据储存原理