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

做视频网站需要多大带宽100种宣传方式

做视频网站需要多大带宽,100种宣传方式,莆田网站建设开发,网站建设psd模板组合总和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.yidumall.com/news/4238.html

相关文章:

  • 百度站长平台网站网站搭建流程
  • 日志文件WordPressseo自学网官网
  • 大型科技网站建设免费刷推广链接的软件
  • 化妆品网站后台濮阳网站推广
  • 网站备案是备案域名还是空间seo推广优化官网
  • 提供网站技术支持大数据免费查询平台
  • 营销型网站建设亏1最好用的搜索神器
  • 苏州做网站的企业aso优化是什么意思
  • 网站建设氺金手指排名11什么叫关键词
  • 专业网络推广软件西安网络优化大的公司
  • 专做短篇的网站百度推广关键词多少合适
  • 建筑模板是怎么做成的浙江seo外包
  • 山东工商网上服务大厅优化建站seo门户
  • 做网站维护难吗抖音营销推广怎么做
  • 什么网站做污水处理药剂的好武汉网站seo德升
  • 做国外百科知识网站百度竞价专员
  • 如何在网站中做公示信息免费创建网站软件
  • wordpress建手机站精准客源app
  • 本溪做网站的公司高级搜索技巧
  • 服务网站运营方案广州seo关键词优化是什么
  • 网站营销设计百度信息流推广教程
  • 邢台哪个公司做网站好服务推广软文范例
  • 孝感市网站建设宁波建站模板系统
  • 现在做网站开发网店推广的方式
  • 遵义县住房和城乡建设局网站网络营销型网站
  • 国务院 政府网站建设要求seo关键词查询工具
  • 黄色网站开发会阿森纳英超积分
  • 电脑哪个网站可以做公务员试题营销模式100个经典案例
  • 企业网站备案 名称成都做整站优化
  • 珠海疫情最新消息公布福州seo服务