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

国内简约网站苏州保利时光印象楼盘价格

国内简约网站,苏州保利时光印象楼盘价格,北京做网站的工作室,做一个代驾小程序要多少钱个人主页#xff1a;C忠实粉丝 欢迎 点赞#x1f44d; 收藏✨ 留言✉ 加关注#x1f493;本文由 C忠实粉丝 原创 模拟算法(4)_外观数列 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记#xff0c;欢迎大家在评论区交流讨论#x1f48c; 目录 1. 题目链… 个人主页C忠实粉丝 欢迎 点赞 收藏✨ 留言✉ 加关注本文由 C忠实粉丝 原创 模拟算法(4)_外观数列 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记欢迎大家在评论区交流讨论 目录 1. 题目链接 : 2. 题目描述 : 3. 解法(模拟 双指针) : 题目分析: 算法思路 : 代码展示 : 结果分析 : 1. 题目链接 : OJ链接 : 外观数列 2. 题目描述 : 「外观数列」是一个数位字符串序列由递归公式定义 countAndSay(1) 1countAndSay(n) 是 countAndSay(n-1) 的行程长度编码。 行程长度编码RLE是一种字符串压缩方法其工作原理是通过将连续相同字符重复两次或更多次替换为字符重复次数运行长度和字符的串联。例如要压缩字符串 3322251 我们将 33 用 23 替换将 222 用 32 替换将 5 用 15 替换并将 1 用 11 替换。因此压缩后字符串变为 23321511。 给定一个整数 n 返回 外观数列 的第 n 个元素。 示例 1 输入n 4 输出1211 解释 countAndSay(1) 1 countAndSay(2) 1 的行程长度编码 11 countAndSay(3) 11 的行程长度编码 21 countAndSay(4) 21 的行程长度编码 1211 示例 2 输入n 1 输出1 解释 这是基本情况。 提示 1 n 30 3. 解法(模拟 双指针) : 题目分析: countAndSay(n) 是对 countAndSay(n - 1) 的描述然后转换成另⼀个数字字符串。 前五项如下 1. 1 2. 11 3. 21 4. 1211 5. 111221 第⼀项是数字 1 描述前⼀项这个数是 1 即 “ ⼀ 个 1 ”记作 11 描述前⼀项这个数是 11 即 “ ⼆ 个 1 ” 记作 21 描述前⼀项这个数是 21 即 “ ⼀ 个 2 ⼀ 个 1 ” 记作 1211 描述前⼀项这个数是 1211 即 “ ⼀ 个 1 ⼀ 个 2 ⼆ 个 1 ” 记作 111221 算法思路 : 1. 初始化:         先将 ret 初始化为 1这是 * *count and say * *序列的第一项。2. 迭代构建序列 :         使用一个外层循环 for (int i 1; i n; i)这个循环会执行 n - 1 次因为我们已经有了第一项。每次迭代都会根据当前项生成下一项。3. 内部逻辑 :         在每次迭代中首先定义一个空字符串 tmp用于存储下一项的内容。         len 存储当前字符串 ret 的长度以便在后续处理中使用。4. 双指针扫描 :         使用两个指针 left 和 right初始都指向字符串的开始位置。目的是扫描字符串并统计相邻相同字符的数量。         内层循环while(right len ret[left] ret[right]) 用来找到从 left 开始的相同字符的连续个数。right 会向右移动直到遇到不同的字符或到达字符串末尾。         一旦 right 指向了不同的字符或者到达了字符串的末尾就可以得知从 left 到 right 的字符是相同的且数量为 right - left。5. 生成下一项 :         使用 tmp to_string(right - left) ret[left]; 将当前相同字符的数量和字符本身拼接到 tmp 中。例如如果遇到 11就会在 tmp 中添加 21表示有两个1。         更新 left 为 right准备处理下一个不同的字符。6. 更新当前项 :         在内层循环完成后将 tmp 赋值给 ret这就构成了新的 * *count and say * *项。7. 返回结果 :         当外层循环完成后返回最终构建好的字符串 ret即为 * *count and say * *序列的第 n 项。 代码展示 : class Solution { public:string countAndSay(int n) {//最基本的情况string ret 1;for(int i 1; i n; i)//解释n - 1次ret即可{string tmp;int len ret.size();for(int left 0, right 0; right len;){while(right len ret[left] ret[right]) right;//11 - 2个1 - 21 //to_string是将不同类型的数据变成字符串 tmp to_string(right - left) ret[left];left right;}ret tmp;}return ret;} }; 结果分析 : 1. 每次迭代的过程都是对当前字符串的描述并将描述生成的字符串用于下一次迭代。 2. 时间复杂度 : 虽然每一项的描述可能导致字符串长度的增加但由于字符的重复性时间复杂度为 O(2 ^ n)也就是说随着 n 的增大生成过程的复杂度会迅速增加。 3. 这个算法的实现既高效又简单利用了字符串的基本操作和简单的逻辑判断能够有效生成** count and say * *序列。
http://www.w-s-a.com/news/964255/

相关文章:

  • 邢台网站制作哪家强上海做网站设计
  • 大连网站建设外贸wordpress添加文章属性
  • 商城网站建设合同范本网上哪里可以免费学编程
  • 服务器公司网站博客wordpress怎么编辑
  • 网站建设网络推广柯西乡塘网站建设
  • 企业做网站需要多少钱企业资质查询系统官网
  • 网站建设需要知识百度统计数据
  • 自已如何做网站建设通网站会员共享密码
  • 做网站学习什么wordpress 文件夹
  • 前端移动网站开发wordpress图文混排
  • 企业网站建站那种好商城类网站怎么优化
  • 手机微网站怎么制作的网上找设计师
  • 网站建设包括哪些方面学校网站 建设
  • 贵阳网站优化公司建筑设计师用什么软件
  • 网站建设的小说静态网页模板免费网站
  • 芜湖建设厅官方网站wordpress自动设置缩略图
  • 推荐网站网页湛江网站建设哪家优惠多
  • 传奇网站免费空间网店装修店面
  • 网站改版 重新收录湖南建筑信息一体化管理平台
  • 可以做直播卖产品的网站陕西省建设银行网站
  • 搭建网站的英语seo优化专员招聘
  • 做网站深紫色搭配什么颜色网站的在线支付怎么做
  • 中国最大网站建设公司长沙专业做网站公司哪家好
  • 金峰辉网站建设菏泽财富中心网站建设
  • 怎么做网站站长视频企业网站开发意义
  • 网站创建多少钱商标自助查询系统官网
  • 免费做App和网站的平台广州做网站推广的公司
  • 衡水做网站推广的公司wordpress相册滑动
  • 不用域名也可以做网站公司网站建设制作难么
  • 学做网站培训机构wordpress 图片拉伸