leetCode练习(77)
来源:互联网 发布:淘宝保证金必须要交吗 编辑:程序博客网 时间:2024/05/24 05:08
题目:Combinations
难度:medium
问题描述:
Given two integers n and k, return all possible combinations ofk numbers out of 1 ...n.
For example,
If n = 4 and k = 2, a solution is:
[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]
解题思路:使用DFS,回溯求解。注意添加判断:剩余字符数小于剩余步数时,不在搜索。可以极大减少迭代次数。
具体代码如下:
public List<List<Integer>> combine(int n, int k) { List<List<Integer>> reslist=new ArrayList<List<Integer>>(); diedai(new ArrayList<Integer>(),0,k,1,n,reslist); return reslist; }//可用字符从start到end//已经进行step步,一共需要k步public void diedai(ArrayList<Integer> list,int step,int k,int start,int end,List<List<Integer>> reslist){if((k-step)>(end-start+1)){return;}if(step==k){List<Integer> temp = new ArrayList<>(list); reslist.add(temp); return;}for(int i=start;i<=end;i++){list.add(i);diedai(list,step+1,k,i+1,end,reslist);list.remove(list.size()-1);}}
0 0
- leetCode练习(77)
- leetCode练习(7)
- leetCode练习(9)
- leetCode练习(2)
- leetCode练习(14)
- leetCode练习(3)
- leetCode练习(4)
- leetCode练习(19)
- leetCode练习(18)
- leetCode练习(5)
- leetCode练习(15)
- leetCode练习(20)
- leetCode练习(21)
- leetCode练习(16)
- leetCode练习(17)
- leetCode练习(11)
- leetCode练习(24)
- leetCode练习(22)
- html项目开发过程中遇到的问题(1)
- Javascript深浅拷贝
- 判断鼠标移入移出元素时的方向
- 数据结构之大体脉络(二)
- NGUI 制作动态图集
- leetCode练习(77)
- java Thread学习(新类库CountDownLatch+CyclicBarrier+DelayQueue)
- PyQt学习笔记(8)--QSplitter分割窗口
- 第八周 【项目二 建立链串的算法库】
- Mix-Editor图文编辑器----Android图文编辑器
- MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合
- Linux的.desktop文件格式及常用属性
- java基础之枚举
- MVP浅析