畫解算法 77-組合

題目連接

https://leetcode-cn.com/problems/combinations/php

題目描述

給定兩個整數 nk,返回 1 ... n 中全部可能的 k 個數的組合。ide

示例:優化

  •  
輸入: n = 4, k = 2輸出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]輸入: n = 4, k = 2輸出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]

解題方案

思路

  • 標籤:回溯與剪枝spa

  • n表示範圍爲1...n,balance表示剩餘空間,start表示開始位置,list爲回溯列表3d

  • 判斷balance == 0,若是爲0則表明list中已經存入k個數,拷貝list存入結果ans中code

  • 若是不爲0,從start位置開始遞歸調用,現將當前位置數據加入list中,並進入下一層,等待返回後將本層加入的數據移除,本質就是樹的構造過程orm

  • 其中循環結束條件默認爲最大值到n,這裏能夠優化進行剪枝,好比n=4,k=3時,若是列表從start=3也就是[3]開始,那麼該組合必定不存在,由於至少要k=3個數據,因此剪枝臨界點爲n-balance+1blog

圖解

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

代碼

  •  
class Solution { private List<List<Integer>> ans = new ArrayList<>(); public List<List<Integer>> combine(int n, int k) { getCombine(n, k, 1, new ArrayList<>()); return ans; }  public void getCombine(int n, int k, int start, List<Integer> list) { if(k == 0) { ans.add(new ArrayList<>(list)); return; } for(int i = start;i <= n - k + 1;i++) { list.add(i); getCombine(n, k - 1, i+1, list); list.remove(list.size() - 1); } }}class Solution {private List<List<Integer>> ans = new ArrayList<>();public List<List<Integer>> combine(int n, int k) {getCombine(n, k, 1, new ArrayList<>());return ans;}public void getCombine(int n, int k, int start, List<Integer> list) {if(k == 0) {ans.add(new ArrayList<>(list));return;}for(int i = start;i <= n - k + 1;i++) {list.add(i);getCombine(n, k - 1, i+1, list);list.remove(list.size() - 1);}}}

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

相關文章
相關標籤/搜索