leetcode 216: Combination Sum III,leetcodetwosum

來源:互聯網
上載者:User

leetcode 216: Combination Sum III,leetcodetwosum

Combination Sum IIITotal Accepted: 1747 Total Submissions: 6301

Find all possible combinations of k numbers that add up to a numbern, given that only numbers from 1 to 9 can be used and each combination should be a unique set of numbers.

Ensure that numbers within the set are sorted in ascending order.


Example 1:

Input: k = 3, n = 7

Output:

[[1,2,4]]

Example 2:

Input: k = 3, n = 9

Output:

[[1,2,6], [1,3,5], [2,3,4]]
[思路]

因為k是不定的, 所以無法用LOOP. 遞迴是此類題的常用解法. 為了方便, 多用一個variable: sum儲存當前cur中所有數的和. 注意要建立一個list 放入結果中, 否則放入的reference 會指向原來的不斷變化的list,    res.add(new ArrayList(cur));

[CODE]

public class Solution {    //k=2  n=3    public List<List<Integer>> combinationSum3(int k, int n) {        List<List<Integer>> res = new ArrayList<List<Integer>>();        if(k<1 || n<1) return res;        List<Integer> cur = new ArrayList<Integer>();        rec(res, cur, 0, k, n, 1);        return res;    }        private void rec(List<List<Integer>> res, List<Integer> cur, int sum, int k, int n, int level) {        if(sum==n && k==0) {            res.add(new ArrayList(cur));            return;        } else if(sum>n || k<=0) return;                for(int i=level; i<=9; i++) {            cur.add(i);            rec(res, cur, sum+i, k-1, n, i+1);            cur.remove(cur.size() - 1);        }    }}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.