当前位置: 首页 > news >正文

网站的软件维护包括什么天津平台网站建设推荐

网站的软件维护包括什么,天津平台网站建设推荐,asp怎么做网站,哪个app可以找培训班组合总和III 216. 组合总和 III - 力扣&#xff08;LeetCode&#xff09; 思路和昨日的组合题类似&#xff0c;但注意对回溯算法中&#xff0c;收获时的条件需要写对&#xff0c;path的长度要为k的同时&#xff0c;path中元素总和要为n。 class Solution { public:vector<…

组合总和III

216. 组合总和 III - 力扣(LeetCode)

        思路和昨日的组合题类似,但注意对回溯算法中,收获时的条件需要写对,path的长度要为k的同时,path中元素总和要为n。

class Solution {
public:vector<int> path;vector<vector<int>> paths;int sum = 0; // 维护当前路径的和void backtracking(int k, int n, int startindex) {if (path.size() == k && sum == n) {paths.push_back(path);return;}for (int i = startindex; i <= 9; i++) {path.push_back(i);sum += i; // 更新路径和backtracking(k, n, i + 1);sum -= i; // 回溯时,恢复路径和path.pop_back();}}vector<vector<int>> combinationSum3(int k, int n) {backtracking(k, n, 1);return paths;}
};

算法的时间复杂度,在最差的情况需,我们需要生成所有C(9,n)个组合,并且对于每个组合,都需要进行k层递归,因此时间复杂度为O(C(9,n)*n)。

空间复杂度考虑递归栈,递归栈的最大深度为n,每个组合需要n个元素的存储空间,隐形空间复杂度是O(n)。

电话号码的字母组合

17. 电话号码的字母组合 - 力扣(LeetCode)

首先,考虑使用一个哈希表来存储数值(这里用数值方便些,之后用 i - '0'可以将char转换为整形)与字符的映射关系。

具体参考代码随想录 (programmercarl.com)

回溯三步法

1.确定回溯函数参数,我们每次回溯返回的值都会存放在一个path字符串中,并存在一个paths数组存放所有的组合结果中,我们用全局变量表示,此外,我们还需要一个变量index来指示现在遍历的位置。

2.确认终止条件。当index与需要遍历的字符长度相同时,就将值存入path中,并返回。

3.单层遍历逻辑,我们需要知道在当前index下的umap存储的字符串大小,然后对这个字符串中的字符进行递归遍历。之后对下一个字符进行处理,因为本题是求不同集合间的组合。

整体代码

class Solution {
public:vector<string> paths; // 用于存储所有可能的字母组合string path; // 用于存储当前的字母组合unordered_map<int, vector<char>> umap; // 创建一个映射表,将数字映射到对应的字母Solution() {umap[2] = {'a', 'b', 'c'}; // 数字2对应的字母umap[3] = {'d', 'e', 'f'}; // 数字3对应的字母umap[4] = {'g', 'h', 'i'}; // 数字4对应的字母umap[5] = {'j', 'k', 'l'}; // 数字5对应的字母umap[6] = {'m', 'n', 'o'}; // 数字6对应的字母umap[7] = {'p', 'q', 'r', 's'}; // 数字7对应的字母umap[8] = {'t', 'u', 'v'}; // 数字8对应的字母umap[9] = {'w', 'x', 'y', 'z'}; // 数字9对应的字母}void backtracking(const string& digits, int index) {// 如果当前组合的长度等于输入数字的长度,将当前组合添加到结果中if (index == digits.size()) {paths.push_back(path);return;}// 将当前处理的数字转换为对应的映射表中的字母int digit = digits[index] - '0'; // 遍历映射表中的字母,进行回溯for (int i = 0; i < umap[digit].size(); i++) {path.push_back(umap[digit][i]); // 添加字母到当前组合backtracking(digits, index + 1); // 处理下一个数字path.pop_back();}}vector<string> letterCombinations(string digits) {//输入为空,直接返回空的结果if (digits.empty()) {return paths;}backtracking(digits, 0);return paths;}
};

算法的时间复杂度参考在最坏情况下,每个数字对应最多4个字母,若输入数字的长度为n,则最坏情况下时间复杂度为O(4^n),因为每一步都有4种选择。代码随想录上是将3个字母和4个字母都区分了出来所以是O(3^m*4^n)

空间复杂度由两部分组成,一是递归的栈空间,二是存储结果的空间,栈空间最坏情况下与输入数字长度n成正比O(n)。存储空间取决于可能的组合数量,最坏情况下为O(4^n),总的空间复杂度为O(m+4^n)。

http://www.yayakq.cn/news/366658/

相关文章:

  • 江安县建设招标网站上海三大设计院
  • 学在郑州app下载温州做网站整站优化
  • 做旅游攻略什么网站最好wordpress图片之间空一行
  • 企业网站建设的具体需求天津做一个简单的网站
  • 画册欣赏网站建设网站需要什么资质
  • 长沙建网站企业网上开店的流程是什么
  • 网站建设属于什么职能多wordpress整合
  • 用织梦做的网站 图片打开很慢山东网站建设开发外包
  • 建设银行网站功能介绍企业网站建设分析
  • 广州专业的网站制作西安的互联网公司有哪些
  • 深圳云网站建站公司商丘网站制作教程
  • 长春火车站是北站吗小型app开发公司
  • 如何开网站赚钱如何注册个人营业执照
  • 一级a做爰片免费网站天天看住房和城乡建设部网站中国建造师网
  • 17网站一起做网店下载兰州装修公司哪家口碑好
  • 网站关键词优化排名公司公司做网站该注意哪些
  • 石景山网站建设推广网站快照怎么更新
  • i深圳网站建设天津建设工程信息网官方
  • 商城手机网站制作企业数字化管理系统有哪些
  • 宝丰县精神文明建设的门户网站旅游网站制作文献
  • 做婚恋网站赚钱吗用ps如何做短视频网站
  • 河北教育网站建设重庆市工程建设标准化信息网
  • 建设电影网站视频做图网站有哪些东西
  • 张家界官方网站wordpress菜单分类目录
  • 工程建设造价全过程监督网站怎么撤销网站备案
  • 做网站和做app长春网站建设工作
  • 在淘宝做网站可以改域名吗网站制作公司获取客户
  • 网站设计怎么学dw网页制作教程视频简单第三期
  • 深圳制作网站的公司简介装潢设计学校
  • 网站制作常用代码怎么自学室内设计与装修