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

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

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

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

  • 相关阅读:
    水木清华小爬虫
    不让复制是不可能的----js获取选中文字
    [转]nonlocal和global
    LLVM和clang
    Megcup2017 Dogfood
    史莱姆自爆问题
    前端颜色表
    [转]论文十诫
    返利网盈利模式
    事务的四个属性ACID
  • 原文地址:https://www.cnblogs.com/vinnson/p/13335985.html
Copyright © 2011-2022 走看看