• [LeetCode] 77. Combinations Java


    题目:

     Given two integers n and k, return all possible combinations of k 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],
    ]

    题意及分析:给出一个n和k,要求求出由n中k个不同的数组成是序列,序列为升序排序。这道题要求所有可能的情况,显然我们可以使用回溯的方法求解,对于每次判断的边界条件为:后面的数要大于前面的数。而且由于这里1到n肯定是递增的,所以继续进行下一层运算的条件可以为 当前位置后面的数。具体看代码实现。

    代码:

    public class Solution {
        public List<List<Integer>> combine(int n, int k) {
    		List<List<Integer>> resList=new ArrayList<>();
    		List<Integer> list=new ArrayList<>();
    		
    		backtracking(resList, list, 1, 1,n, k);
    		return resList; 
        }
    	
    	public void backtracking(List<List<Integer>> resList,List<Integer> list,int t,int start,int n, int k) {
    		if(t>k){
    			resList.add(new ArrayList<>(list));
    		}else{
    			for(int i=start;i<=n;i++){
                    list.add(i);
    				backtracking(resList, list, t+1,i+1, n, k);
    				list.remove(list.size()-1);
    			}
    		}
    	}
    }
    

      

  • 相关阅读:
    架构漫谈-阅读笔记(一)
    一线架构师实践指南--总结
    周四进度二
    质量属性改进
    结对作业第一次
    软件工程(2019)第三次作业
    软件工程(2019)第二次作业
    MarkDown编辑方法网址
    软件工程(2019年)第一次作业
    本人的coding地址
  • 原文地址:https://www.cnblogs.com/271934Liao/p/6962789.html
Copyright © 2020-2023  润新知