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

论文做系统简单还是网站简单二十条优化措施

论文做系统简单还是网站简单,二十条优化措施,招聘网站怎么做线下活动,在局网站 作风建设方案1. 题目链接 LeetCode 38. 外观数列 2. 题目描述 给定一个正整数 n,生成外观数列的第 n 项。外观数列的定义如下: 第 1 项为 "1"。第 n 项是对第 n-1 项的描述。例如,第 2 项描述第 1 项("1")为…
1. 题目链接

LeetCode 38. 外观数列


2. 题目描述

给定一个正整数 n,生成外观数列的第 n 项。外观数列的定义如下:

  • 1 项为 "1"
  • n 项是对第 n-1 项的描述。例如,第 2 项描述第 1 项("1")为 "11"(即“1个1”),第 3 项描述第 2 项("11")为 "21"(即“2个1”),依次类推。

示例

  • 输入:n = 4 → 输出:"1211"
  • 输入:n = 5 → 输出:"111221"

3. 示例分析
  1. 基础案例

    • n=1"1"
    • n=2"11"
    • n=3"21"
    • n=4"1211"(描述 "21" 为“1个2,1个1”)
    • n=5"111221"(描述 "1211" 为“1个1,1个2,2个1”)
  2. 复杂案例

    • n=6"312211"(描述 "111221" 为“3个1,2个2,1个1”)

4. 算法思路

核心思想迭代生成 + 双指针统计

  1. 初始化:从第 1"1" 开始迭代。
  2. 迭代生成:对当前项从左到右扫描,统计连续相同字符的数量。
  3. 双指针统计
    • left 指针标记当前字符的起始位置。
    • right 指针向右移动,直到遇到不同字符。
    • 统计长度 right - left,拼接成新字符串的 "数量+字符"
  4. 循环递推:重复上述过程 n-1 次,生成第 n 项。

时间复杂度

  • 外层循环 n-1 次,内层遍历字符串长度,总时间复杂度为 O(n·m),其中 m 为字符串的平均长度。

5. 边界条件与注意事项
  1. 输入范围
    • n ≥ 1,需处理 n=1 直接返回 "1"
  2. 字符串拼接优化
    • 使用 string+= 操作拼接字符,避免频繁创建新对象。
  3. 指针越界检查
    • 内层循环需确保 leftright 不超过字符串长度。
  4. 大数问题
    • n 较大时(如 n=30),生成的字符串长度可能超过 1e5,需注意内存限制。

6. 代码实现
class Solution {
public:string countAndSay(int n) {string ret = "1";for (int i = 1; i < n; i++) { // 迭代生成前n-1项string tmp; // 临时存储当前项的下一项描述int len = ret.size();for (int left = 0, right = 0; right < len;) {// 移动right指针,统计连续相同字符的数量while (right < len && ret[right] == ret[left]) right++;// 拼接"数量+字符"tmp += to_string(right - left) + ret[left];left = right; // 更新left指针到下一个字符的起始位置}ret = tmp; // 更新当前项}return ret;}
};

在这里插入图片描述


关键代码解析

  1. 外层循环控制迭代次数

    for (int i = 1; i < n; i++)
    
    • 从第 1 项开始,生成到第 n 项需要迭代 n-1 次。
  2. 双指针统计连续字符

    while (right < len && ret[right] == ret[left]) right++;
    
    • right 指针右移,直到遇到不同字符或越界。此时 right - left 即为连续字符的数量。
  3. 拼接描述字符串

    tmp += to_string(right - left) + ret[left];
    
    • 将数量转换为字符串,并与当前字符拼接。例如,连续 2'1' 拼接为 "21"
  4. 更新指针位置

    left = right;
    
    • left 移动到下一个待统计字符的起始位置。

与其他解法的对比

方法时间复杂度空间复杂度核心思想
递归法O(n·m)O(n·m)递归生成前一项,再描述
迭代法O(n·m)O(m)双指针遍历,直接构造
动态规划法O(n·m)O(m)存储中间结果,避免重复计算

总结

迭代法通过双指针高效统计连续字符,避免了递归的栈空间开销,是本题的最优解。其核心在于 逐层递推双指针滑动窗口,以线性时间复杂度生成外观数列。

适用场景

  • 需要快速生成较大 n 值的结果(如 n ≤ 30)。
  • 内存敏感场景,避免递归栈溢出。

关键点

  • 理解双指针在统计连续字符中的应用。
  • 掌握字符串拼接的优化技巧。
http://www.dtcms.com/wzjs/309580.html

相关文章:

  • 网站建设公司财务预算江苏做网站的公司有哪些
  • 简单的美食网站模板软文推广发稿
  • 个人网站可以做经营性网站产品软文撰写
  • 泰安网站建设公司哪家好网络整合营销4i原则
  • 如何用手机建网站seo免费浏览网站
  • 怎么接做网站的任务爱站网怎么使用
  • 学做衣服网站郑州网站建设哪家好
  • 嘉兴手机网站建设北京seo服务销售
  • 科技经济导刊官网亚马逊seo是什么意思
  • 做彩票网站犯法不sem是什么岗位
  • 莞城做网站公司今天新闻最新消息
  • 如何开发动态网站全自动引流推广软件app
  • 可以做很多个网站然后哭推广信息流广告哪个平台好
  • 深圳网站维护seo百度推广联系方式
  • 渭南免费做网站友链申请
  • 网上翻译网站做译员如何建立自己的网站
  • wordpress和dedecms武汉seo百度
  • 模板网站制作平台怎样申请网站
  • 教育培训网站有哪些百度推广怎么登陆
  • 常州西站建设规划google adwords关键词工具
  • 四个免费h5网站市场营销平台
  • 做网站可能存在的问题免费的网站软件
  • 免费访问国外网站的app电商培训机构哪家好
  • 公众号怎么弄好看的模板北京培训seo哪个好
  • 门户网站建设检察百度24小时人工客服电话
  • 做网站用软件百度爱采购平台官网
  • 国外网站大牛不懂英语可以做吗手机建站系统
  • org 结尾的网站注册要什么手续海外推广代理商
  • dede网站幻灯片广州各区正在进一步优化以下措施
  • 看德国真人做看的视频网站网站推广网络推广