zoukankan      html  css  js  c++  java
  • 【刷题-LeetCode】216. Combination Sum III

    1. Combination Sum III

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

    Note:

    • All numbers will be positive integers.
    • The solution set must not contain duplicate combinations.

    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]]
    

    定义函数f(l, r, n, target),表示在区间[l, r]之间和为target的n个数,则:

    [f(l, r, n, target) = igcup_{i=l}^r f(i+1, r, n-1, target - i) ]

    当n=2时,直接采用双指针搜索

    class Solution {
    public:
        vector<vector<int>> combinationSum3(int k, int n) {
            vector<bool>nums(10, true);
            return comb(1, 9, k, n);
        }
        vector<vector<int>> comb(int l, int r, int n, int target){
            vector<vector<int>>ans;
            if(n == 2){
                int i = l, j = r;
                while(i < j){
                    int tmp = i + j;
                    if(tmp == target){
                        ans.push_back({i,j});
                        i++;
                        j--;
                    }else if(tmp < target){
                        i++;
                    }else{
                        j--;
                    }
                }
                return ans;
            }
            for(int i = l; i <= r; ++i){
                vector<vector<int>>tmp_ans = comb(i+1, r, n - 1, target - i);
                if(tmp_ans.size() > 0){
                    for(auto &v : tmp_ans){
                        v.insert(v.begin(), i);
                        ans.push_back(v);
                    }
                }
            }
            return ans;
        }
    };
    
    作者:Vinson

    -------------------------------------------

    个性签名:只要想起一生中后悔的事,梅花便落满了南山

    如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

  • 相关阅读:
    【Codeforces 475F】—Meta-universe(Set)
    【Codeforces 475F】—Meta-universe(Set)
    【UOJ #79】—一般图最大匹配(带花树)
    【UOJ #79】—一般图最大匹配(带花树)
    【NOIp2019模拟】题解
    【NOIp2019模拟】题解
    涉及到的业务逻辑总结
    2016-9-14
    Spring MVC
    2016-9-12
  • 原文地址:https://www.cnblogs.com/vinnson/p/13335985.html
Copyright © 2011-2022 走看看