[LeetCode 77. Combinations] backtracking

c++:

 vector<vector<int>> combine(int n, int k) {
        vector<vector<int> > res;
        vector<int> ans;
        bkt(n,res,k,ans,1);
        return res;
    }
    void  bkt(int n,vector<vector<int>>& res,int k,vector<int>& ans,int start){
            if(ans.size()==k){
                res.push_back(ans);
                return ;
            }
            for(int i=start;i<=n;i++){
                ans.push_back(i);
                bkt(n,res,k,ans,i+1);
                ans.pop_back();
            }
        }

python:

class Solution(object):
    def combine(self, n, k):
        """
        :type n: int
        :type k: int
        :rtype: List[List[int]]
        """
        res = []
        def dfs(j,temp):
            if k==len(temp):
                res.append(copy.deepcopy(temp))//或者list(temp)
                return
            for i in range(j,n+1):
                temp.append(i)
                dfs(i+1,temp)
                temp.remove(i)
        dfs(1,[])
        return res

猜你喜欢

转载自blog.csdn.net/Csdn_jey/article/details/89041008
今日推荐