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

【算法】模拟算法——Z字形变换(medium)

题解:模拟算法——Z字形变换(medium)

目录

  • 1.题目
  • 2.题解
  • 3.参考代码
  • 4.总结

1.题目

题目链接:LINK
在这里插入图片描述

2.题解

利用模拟,来解决问题。

首先创建出一个O(numRows*n)的数组来,并按照题目要求把每个字符按顺序填进去。

这里以numRows = 4,字符串s = "abcdefghijk"为例来演示如下:
在这里插入图片描述
然后我们按每行挨个把字符加进去就行了,除了很浪费空间…

所以,我们可以总结规律来进行优化:
在这里插入图片描述
规律可以分为两部分:
第一部分是第一行和最后一行,满足如下特点:
下标从numRows-1开始,且后一个比前一个多d
第二部分是中间那些行,满足如下特点:
两两一组,下标从{k,d-k}开始,下一组比前一组多d

图解如下:
在这里插入图片描述

3.参考代码

class Solution {
public:string convert(string s, int numRows) {if(numRows == 1) return s;int n = s.size();string ret;int d = 2*numRows - 2;//先处理第一行for(int i = 0; i < n; i+=d){ret+=s[i];}//再处理中间一行for(int i = 1; i < numRows - 1; i++)//标识行{for(int j = i,k = d-i;j < n || k < n;j+=d,k+=d)//这个地方为什么用||来判定是否结束?防止一个条件满足了,另一个不满足从而导致漏字符的情况{if(j < n) ret+=s[j];//上面判断结束条件有可能是越界的,因而在加入之前应该先判断一下if(k < n) ret+=s[k];}}//处理最后一行for(int i = numRows-1; i < n; i+=d){ret+=s[i];}return ret;}
};

4.总结

大部分的模拟题如果要做优化,大概就是去找其中的规律。


EOF

相关文章:

  • Python魔法之旅-魔法方法(08)
  • BearPi-HM Nano开发笔记
  • LiveWeb前端:深度解析与挑战应对
  • net语言编程:深入探索其奥秘与挑战
  • 说说影响网络的因素
  • Java网络编程(上)
  • 【Linux】如何利用linux项目自动化构建工具-make/Makefile以及vim编辑器构建两个小程序:倒计时和进度条
  • go语言基于Gin集成后台管理系统开发定时任务管理cron/v3好用又好看
  • mac 下配置mysql的全局环境变量
  • Spring Cloud Alibaba-09-Seata分布式事务
  • 秋招突击——算法打卡——5/30——复习{最大上升子序列的和、面试算法缺陷补充}——新做:{回文数+补充 自定义Stoi实现、正则表达式匹配}
  • AI科技,赋能企业财务管理
  • ARC学习(2)基本编程模型认识(二)
  • C#多维数组不同读取方式的性能差异
  • 快手发布大模型产品“可图”,超20种创新AI图像玩法限免上线
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • FineReport中如何实现自动滚屏效果
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • miaov-React 最佳入门
  • sessionStorage和localStorage
  • Unix命令
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 微信小程序开发问题汇总
  • ​​​​​​​​​​​​​​Γ函数
  • ​iOS实时查看App运行日志
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (黑马C++)L06 重载与继承
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (一)80c52学习之旅-起始篇
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • (转载)CentOS查看系统信息|CentOS查看命令
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .Net Core和.Net Standard直观理解
  • .NET Core跨平台微服务学习资源
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .net refrector
  • .net 程序发生了一个不可捕获的异常
  • .net 反编译_.net反编译的相关问题
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .NET建议使用的大小写命名原则
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
  • .NET委托:一个关于C#的睡前故事
  • .net中应用SQL缓存(实例使用)
  • :not(:first-child)和:not(:last-child)的用法
  • @RequestMapping 的作用是什么?
  • [ C++ ] 类和对象( 下 )
  • [ 网络基础篇 ] MAP 迈普交换机常用命令详解
  • [20140403]查询是否产生日志