多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > php開(kāi)源 > php教程 > 個(gè)人記錄-LeetCode 77. Combinations

個(gè)人記錄-LeetCode 77. Combinations

來(lái)源:程序員人生   發(fā)布時(shí)間:2017-04-07 10:56:22 閱讀次數(shù):3737次

問(wèn)題:
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],
]

依照我們做排列的思路寫(xiě)代碼便可:
1、按順序從小到達(dá)排列n個(gè)數(shù)。
2、從中取出k個(gè)數(shù),其實(shí)就是先取出1個(gè) (k種可能),然后從剩下的k⑴個(gè)中再取出1個(gè)(k⑴種可能),以此類(lèi)推。

為了保證取出的組合不重復(fù),我們保證下1個(gè)取出的數(shù)1定在當(dāng)前數(shù)的后面便可。
即第1個(gè)數(shù)取了1后,第2個(gè)數(shù)只能從2~n中??;第1個(gè)數(shù)取了2后,第2個(gè)數(shù)只能從3~n中取 (取了2再取1,會(huì)和取了1再取2重復(fù))。

整體來(lái)說(shuō)結(jié)果就是將第1位為1的所有排列取完后,才開(kāi)始取所有第1位為2的排列,順次類(lèi)推。

代碼示例:

public class Solution {
    public List<List<Integer>> combine(int n, int k) {
        List<List<Integer>> rst = new ArrayList<>();

        if (n < 0 || k < 0 || n < k) {
            return rst;
        }

        //初始化數(shù)組
        int[] nInts = new int[n];
        for (int i = 0; i < n; ++i) {
            nInts[i] = i+1;
        }

        List<Integer> curr = new ArrayList<>();
        for (int i = 0; i <= n-k; ++i) {
            //順次安排好第1位,這個(gè)實(shí)際上是基于深度優(yōu)先的迭代
            combineInner(rst, nInts, i, curr, k);
        }

        return rst;
    }

    private void combineInner(List<List<Integer>> rst, int[] nInts, int next, List<Integer> curr, int sz) {
        //將當(dāng)前數(shù)加入結(jié)果隊(duì)列
        List<Integer> newList = new ArrayList<>(curr);
        newList.add(nInts[next]);

        //判斷長(zhǎng)度是不是滿(mǎn)足了條件
        if (newList.size() == sz) {
            rst.add(newList);
            return;
        }

        //順次加入當(dāng)前位以后的數(shù)
        for (int i = next+1; i <= nInts.length - (sz - newList.size()); ++i) {
            combineInner(rst, nInts, i, newList, sz);
        }
    }
}
生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線(xiàn)----------------------------
分享到:
------分隔線(xiàn)----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 最新欧美日韩 | 中文字幕在线观看国产 | 九九久久久2 | 国产精品成人观看视频国产 | 香蕉高清免费永久在线视频 | 欧美最猛性xxxxx短视频 | 亚洲天堂视频在线免费观看 | 亚洲视频在线一区二区 | 色综合天天综一个色天天综合网 | 美国一区二区三区 | 亚洲综合性 | 国产精品久久久久无毒 | 亚洲国产成人久久三区 | 国产中日韩一区二区三区 | 男人久久天堂 | 女人与zzzxxxx0oo0 | 欧美亚洲一区二区三区 | 国产精品看片 | 亚洲成年人免费网站 | 九九精品久久久久久久久 | 日本一区二区三区不卡在线视频 | 九九久久久2 | jiz欧美高清| 亚洲日本免费 | 欧亚精品一区二区三区 | 性888xxxx入欧美 | 亚洲在线观看一区二区 | 欧美jizz18性欧美年轻 | 免费xxxxx大片观看 | 另类图片另类小说 | 国产精品嫩草影院在线 | 欧美亚洲国产精品久久久久 | 澳门特级α片免费观看视频 | 国产在线乱子伦一区二区 | 日本韩国欧美三级 | 亚洲图片欧美在线 | 国模一区二区三区视频一 | 亚洲精国产一区二区三区 | 欧美激情一区二区三区在线播放 | 国产中文久久精品 | 中国精品视频 |