Java日記2018-08-02

Combinations-

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個不同的數(shù)組成是序列,使用回溯的方法求解,對于每次判斷的邊界條件為:后面的數(shù)要大于前面的數(shù),由于這里1到n肯定是遞增的,所以繼續(xù)進(jìn)行下一層運(yùn)算的條件可以為 當(dāng)前位置后面的數(shù)

public static ArrayList<ArrayList<Integer>> combine(int n,int k){
        ArrayList<ArrayList<Integer>> res = new  ArrayList<>();
        ArrayList<Integer> lst = new ArrayList<>();
        dfs(n,k,1,1,res,lst);
        return res;
    }
    public static void dfs(int n,int k,int t,int start,ArrayList<ArrayList<Integer>> res,ArrayList<Integer> lst){
        //t記錄當(dāng)前l(fā)ist的數(shù)量,如果t大于需要的數(shù)組的大小k時,可以計入結(jié)果
        if(t>k){
            //System.out.println(lst.get(0));
            res.add(new ArrayList<>(lst));
        } else {
            for(int i=start;i<=n;i++){
                lst.add(i);
                //下一個目的數(shù)組應(yīng)該是當(dāng)前的數(shù)的后一位,即i+1,并且將當(dāng)前數(shù)組大小同時加1即t+1,用于判斷是否該記錄結(jié)果了
                dfs(n,k,t+1,i+1,res,lst);
                lst.remove(lst.size()-1);
            }
            
        }
        
    }
    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi閱讀 7,845評論 0 10
  • 最近有兩件熱點事件刷爆網(wǎng)絡(luò): 1、6.28上海世外小學(xué)砍人案 2、《我不是藥神》電影熱映引發(fā)了巨大的討論 生老病死...
    詩意恩典閱讀 800評論 2 3
  • 用“用戶價值公式”衡量創(chuàng)新 百度貼吧百度知道的產(chǎn)品經(jīng)理俞軍認(rèn)為,產(chǎn)品經(jīng)理是以創(chuàng)造用戶價值為工具,打破舊的利益平衡,...
    明新理財小明閱讀 415評論 0 0
  • 前段時間,一直想去位于新疆的試驗地看看,想親自去調(diào)查自己的材料。終于有一天,在被老師告知我可以去新疆了的時候,如愿...
    青小橋閱讀 186評論 0 0
  • 許多人努力終生,不斷從一處航向另一處,到頭來只是讓自己陷入兩難的局面,既然無法使自己本身的價值得到圓滿的展現(xiàn),也無...
    王淇生閱讀 810評論 0 0

友情鏈接更多精彩內(nèi)容