您的位置:首页 > 教育 > 锐评 > 网页淘宝_河南app定制开发_刷关键词排名_兰州网络推广优化服务

网页淘宝_河南app定制开发_刷关键词排名_兰州网络推广优化服务

2025/2/24 14:11:19 来源:https://blog.csdn.net/m0_73805456/article/details/144176767  浏览:    关键词:网页淘宝_河南app定制开发_刷关键词排名_兰州网络推广优化服务
网页淘宝_河南app定制开发_刷关键词排名_兰州网络推广优化服务

77.组合

77. 组合 - 力扣(LeetCode) 

给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。

你可以按 任何顺序 返回答案。

示例 1:

输入:n = 4, k = 2
输出:
[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],
]

示例 2:

输入:n = 1, k = 1
输出:[[1]]

提示:

  • 1 <= n <= 20
  • 1 <= k <= n
class Solution {
private:void backtrack(vector<vector<int>>& result,vector<int>& arr,int n,int i,int num,int k){if(num==k)//num记录arr中的元素个数{result.push_back(arr);return;}for(int j=i;i<=n;i++){arr.push_back(i);//arr中的元素个数+1backtrack(result,arr,n,i+1,num+1,k);arr.pop_back();}}
public:vector<vector<int>> combine(int n, int k) {vector<vector<int>> result;vector<int> arr;backtrack(result,arr,n,1,0,k);return result;}
};

78.子集

78. 子集 - 力扣(LeetCode) 

给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的

子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。

示例 1:

输入:nums = [1,2,3]
输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]

示例 2:

输入:nums = [0]
输出:[[],[0]]

提示:

  • 1 <= nums.length <= 10
  • -10 <= nums[i] <= 10
  • nums 中的所有元素 互不相同
class Solution {
private:void backtrack(vector<vector<int>>& result,vector<int>& arr,vector<int>& nums,int n,int i,int num,int k){if(num==k){result.push_back(arr);return;}for(int j=i;i<n;i++){arr.push_back(nums[i]);backtrack(result,arr,nums,n,i+1,num+1,k);arr.pop_back();}}
public:vector<vector<int>> subsets(vector<int>& nums) {vector<vector<int>> result;vector<int> arr;int n=nums.size();for(int k=0;k<=n;k++)//求出元素个数为0、1、2、…、n的所有组合{backtrack(result,arr,nums,n,0,0,k);}return result;}
};

 通过77.组合这个题目可以求得nums数组中所有可能的k个数的组合,而要求子集只要分别求出元素个数为0、1、2、…、n的所有组合即可。

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com