本文共 728 字,大约阅读时间需要 2 分钟。
题目描述
给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。示例:
输入: n = 4, k = 2
输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ]来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/combinations 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。class Solution { public: /* 子树,用回溯 */ vector> res; vector > combine(int n, int k) { vector track; traverse(track,n,k,1); return res; } void traverse(vector &track,int n,int k,int index){ //结束条件 if(track.size()==k) { res.push_back(track); return; } for(int i=index;i<=n;i++){ //因为为了避免重复,下次回溯从i+1开始,所以每次都可以做选择 //可以做选择的情况,选择 track.push_back(i); traverse(track,n,k,i+1); //撤销选择 track.pop_back(); } }};