LeetCode 75| 回溯
2023-12-26 18:10:36
目录
17 电话号码的字母组合
class Solution {
private:
vector<string>res;
const string strs[10] = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
public:
vector<string> letterCombinations(string digits) {
if(digits.size() == 0)return res;
getCombinations(digits,0,"");
return res;
}
void getCombinations(string digits,int cnt,string s){
if(cnt == digits.size()){
res.push_back(s);
return;
}
int digit = digits[cnt] - '0';
string str = strs[digit];
for(int i = 0;i < str.size();i++){
getCombinations(digits,cnt + 1,s + str[i]);
}
}
};
时间复杂度O(×)N是对应三个字母的数字个数,M是对应四个字母的数字个数
空间复杂度O(×)N是对应三个字母的数字个数,M是对应四个字母的数字个数
216 组合总和 |||
class Solution {
private:
vector<vector<int>>res;
vector<int>now;
public:
vector<vector<int>> combinationSum3(int k, int n) {
dfs(1,0,k,n);
return res;
}
void dfs(int cnt,int sum,int k,int n){
if(sum > n)return;
if(now.size() == k){
if(sum == n)res.push_back(now);
return;
}
for(int i = cnt;i <= 9;i++){
now.push_back(i);
sum += i;
dfs(i + 1,sum,k,n);
sum -= i;
now.pop_back();
}
}
};
时间复杂度O(N ×?)N为集合的大小,本题中为9,一个有个状态(选择或者不选这个数字)
空间复杂度O(N)
文章来源:https://blog.csdn.net/m0_72832574/article/details/135223560
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!