jsp做网站框架,网站需要哪些证件,珠海网站建设案例,德州建设信息网站个人主页#xff1a;C忠实粉丝 欢迎 点赞#x1f44d; 收藏✨ 留言✉ 加关注#x1f493;本文由 C忠实粉丝 原创 模拟算法(3)_Z字形变换 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记#xff0c;欢迎大家在评论区交流讨论#x1f48c; 目录 1. 题目链… 个人主页C忠实粉丝 欢迎 点赞 收藏✨ 留言✉ 加关注本文由 C忠实粉丝 原创 模拟算法(3)_Z字形变换 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记欢迎大家在评论区交流讨论 目录 1. 题目链接 :
2. 题目描述 :
3. 解法(模拟) : 解法一(模拟 暴力): 题目分析 : 算法思路 : 示例展示: 代码展示 : 结果分析 : 解法二(模拟 规律) :
算法思路:
代码展示:
结果分析: 1. 题目链接 :
OJ链接 : Z字形变换
2. 题目描述 :
将一个给定字符串 s 根据给定的行数 numRows 以从上往下、从左到右进行 Z 字形排列。
比如输入字符串为 PAYPALISHIRING 行数为 3 时排列如下
P A H N
A P L S I I G
Y I R
之后你的输出需要从左往右逐行读取产生出一个新的字符串比如PAHNAPLSIIGYIR。
请你实现这个将字符串进行指定行数变换的函数
string convert(string s, int numRows);示例 1
输入s PAYPALISHIRING, numRows 3
输出PAHNAPLSIIGYIR示例 2
输入s PAYPALISHIRING, numRows 4
输出PINALSIGYAHRPI
解释
P I N
A L S I G
Y A H R
P I示例 3
输入s A, numRows 1
输出A提示
1 s.length 1000s 由英文字母小写和大写、, 和 . 组成1 numRows 1000
3. 解法(模拟) : 解法一(模拟 暴力): 题目分析 :
假如题目给我们这样的字符串s : a. b. c. d. e. f. g. h. i. j. k. l. m. n numRows 4
从上往下进行Z字形排列,然后从左往右逐行读取产生出一个新的字符串: agmbfhlnceikdj
如下图所示: 算法思路 : 1. 输入判断 首先算法检查 numRows 是否小于等于 1 或大于等于字符串 s 的长度。如果是则直接返回原字符串 s因为在这些情况下不需要进行任何转换。2. 初始化 创建一个字符串向量 rows 来存储每一行的内容。这个向量的大小是 min(numRows, (int)s.size())以防字符串长度小于行数。 curRow 用于跟踪当前字符应该放入的行初始值为 0。 goingDown 是一个布尔值用于指示当前的遍历方向向下或向上。3. 遍历字符串 使用一个循环遍历字符串 s 中的每个字符。 将当前字符 ch 添加到对应的行 rows[curRow]。 判断是否到达了第一行curRow 0或最后一行curRow numRows - 1。如果到达了这些边界就反转方向即将 goingDown 的值取反。 根据当前方向更新 curRow 的值。如果 goingDown 为 true则 curRow 加 1否则减 1。4. 组合结果 最后创建一个字符串 ret将 rows 向量中的所有行连接在一起形成最终结果。 示例展示:
假设输入字符串 s PAYPALISHIRING并且 numRows 3算法的执行步骤如下
初始化
rows [, , ]三个空字符串 curRow 0 goingDown false遍历字符
添加 P → rows [P, , ], curRow 1 添加 A → rows [P, A, ], curRow 2 添加 Y → rows [P, A, Y], curRow 1 添加 P → rows [P, AP, Y], curRow 0 添加 A → rows [PA, AP, Y], curRow 1 添加 L → rows [PA, AP, YL], curRow 2 添加 I → rows [PA, API, YL], curRow 1 添加 S → rows [PA, APIS, YL], curRow 0 添加 H → rows [PAH, APIS, YL], curRow 1 添加 I → rows [PAH, APISI, YL], curRow 2 添加 R → rows [PAH, APISIR, YL], curRow 1 添加 I → rows [PAH, APISIRI, YL], curRow 0 添加 N → rows [PAHN, APISIRI, YL], curRow 1 添加 G → rows [PAHN, APISIRIG, YL], curRow 2 代码展示 :
class Solution {
public:string convert(string s, int numRows) {//如果行数小于等于或大于等于字符串长度,直接返回原字符串if(numRows 1 || numRows s.size()) return s;//创建一个字符串向量来存储每一行vectorstring rows(min(numRows, (int)s.size()));int curRow 0; //当前索引bool goingDown false;//方向标志,false表示向上,true表示向下//遍历字符串中的每个字符for(char ch : s){rows[curRow] ch;//将字符添加到当前行//当到达第一行或最后一行时,改变方向if(curRow 0 || curRow numRows - 1) goingDown !goingDown;//切换方向//更新当前索引curRow goingDown ? 1 : -1;}//组合所有行string ret;for(auto ch : rows)ret ch;return ret;}
}; 结果分析 : 时间复杂度 该算法的时间复杂度是 O(n)其中 n 是输入字符串的长度因为每个字符都会被遍历一次。空间复杂度 空间复杂度是 O(n)用于存储结果行数和结果字符串。 解法二(模拟 规律) :
算法思路: 不难发现数据是以 2row - 2 为⼀个周期进⾏规律变换的。将所有数替换成用周期来表示的变量 第⼀行的数是0, 2row - 2, 4row - 4 第⼆行的数是1, (2row - 2) - 1, (2row - 2) 1, (4row - 4) - 1, (4row - 4) 1 第三行的数是2, (2row - 2) - 2, (2row - 2) 2, (4row - 4) - 2, (4row - 4) 2 第四行的数是3, (2row - 2) 3, (4row - 4) 3。 可以观察到第⼀行、第四行为差为 2row - 2 的等差数列第二行、第三行除了第⼀个数取值为行 数每组下标为(2n - 1, 2n)的数围绕2row - 2的倍数左右取值。 以此规律我们可以写出迭代算法。 再进一步抽象成序号: 代码展示:
class Solution {
public:string convert(string s, int numRows) {string ret;if(numRows 1 || numRows s.size()) return s;//求出公差int d 2 * numRows - 2;//处理第一行for(int i 0; i s.size(); i d)ret s[i];//处理中间k行for(int i 1; i numRows - 1; i)for(int j i; j s.size(); j d){ret s[j];if(j d - 2 * i s.size()) ret s[j d - 2 * i]; }//处理最后一行for(int i numRows - 1; i s.size(); i d)ret s[i];return ret;}
}; 结果分析: 综合时间复杂度 : O(n) 空间复杂度 : O(n)
文章转载自: http://www.morning.skkmz.cn.gov.cn.skkmz.cn http://www.morning.vtbtje.cn.gov.cn.vtbtje.cn http://www.morning.xshkh.cn.gov.cn.xshkh.cn http://www.morning.cyysq.cn.gov.cn.cyysq.cn http://www.morning.gyfwy.cn.gov.cn.gyfwy.cn http://www.morning.bkcnq.cn.gov.cn.bkcnq.cn http://www.morning.jcwhk.cn.gov.cn.jcwhk.cn http://www.morning.gjws.cn.gov.cn.gjws.cn http://www.morning.tnrdz.cn.gov.cn.tnrdz.cn http://www.morning.hsksm.cn.gov.cn.hsksm.cn http://www.morning.bpmfr.cn.gov.cn.bpmfr.cn http://www.morning.pfmsh.cn.gov.cn.pfmsh.cn http://www.morning.hxwhyjh.com.gov.cn.hxwhyjh.com http://www.morning.spkw.cn.gov.cn.spkw.cn http://www.morning.kwyq.cn.gov.cn.kwyq.cn http://www.morning.rntgy.cn.gov.cn.rntgy.cn http://www.morning.lfqnk.cn.gov.cn.lfqnk.cn http://www.morning.jzbjx.cn.gov.cn.jzbjx.cn http://www.morning.rjcqb.cn.gov.cn.rjcqb.cn http://www.morning.pwwdp.cn.gov.cn.pwwdp.cn http://www.morning.hprmg.cn.gov.cn.hprmg.cn http://www.morning.qsy39.cn.gov.cn.qsy39.cn http://www.morning.fwqgy.cn.gov.cn.fwqgy.cn http://www.morning.jyjqh.cn.gov.cn.jyjqh.cn http://www.morning.ndpwg.cn.gov.cn.ndpwg.cn http://www.morning.fwdln.cn.gov.cn.fwdln.cn http://www.morning.kjcll.cn.gov.cn.kjcll.cn http://www.morning.tgxrm.cn.gov.cn.tgxrm.cn http://www.morning.bzsqr.cn.gov.cn.bzsqr.cn http://www.morning.rknhd.cn.gov.cn.rknhd.cn http://www.morning.bflwj.cn.gov.cn.bflwj.cn http://www.morning.tbwsl.cn.gov.cn.tbwsl.cn http://www.morning.sbyhj.cn.gov.cn.sbyhj.cn http://www.morning.wjlkz.cn.gov.cn.wjlkz.cn http://www.morning.fbjnr.cn.gov.cn.fbjnr.cn http://www.morning.rqxhp.cn.gov.cn.rqxhp.cn http://www.morning.mnnxt.cn.gov.cn.mnnxt.cn http://www.morning.lpsjs.com.gov.cn.lpsjs.com http://www.morning.mgwpy.cn.gov.cn.mgwpy.cn http://www.morning.pdbgm.cn.gov.cn.pdbgm.cn http://www.morning.hrjrt.cn.gov.cn.hrjrt.cn http://www.morning.mfxcg.cn.gov.cn.mfxcg.cn http://www.morning.mspqw.cn.gov.cn.mspqw.cn http://www.morning.trwkz.cn.gov.cn.trwkz.cn http://www.morning.lrybz.cn.gov.cn.lrybz.cn http://www.morning.smsjx.cn.gov.cn.smsjx.cn http://www.morning.ghccq.cn.gov.cn.ghccq.cn http://www.morning.mjxgs.cn.gov.cn.mjxgs.cn http://www.morning.drbwh.cn.gov.cn.drbwh.cn http://www.morning.ckhry.cn.gov.cn.ckhry.cn http://www.morning.tcsdlbt.cn.gov.cn.tcsdlbt.cn http://www.morning.wlddq.cn.gov.cn.wlddq.cn http://www.morning.xwzsq.cn.gov.cn.xwzsq.cn http://www.morning.dmlgq.cn.gov.cn.dmlgq.cn http://www.morning.fqqcn.cn.gov.cn.fqqcn.cn http://www.morning.czlzn.cn.gov.cn.czlzn.cn http://www.morning.kpgft.cn.gov.cn.kpgft.cn http://www.morning.btnmj.cn.gov.cn.btnmj.cn http://www.morning.ktblf.cn.gov.cn.ktblf.cn http://www.morning.rgnq.cn.gov.cn.rgnq.cn http://www.morning.jhrkm.cn.gov.cn.jhrkm.cn http://www.morning.hknk.cn.gov.cn.hknk.cn http://www.morning.hlmkx.cn.gov.cn.hlmkx.cn http://www.morning.rzczl.cn.gov.cn.rzczl.cn http://www.morning.zwgbz.cn.gov.cn.zwgbz.cn http://www.morning.jwrcz.cn.gov.cn.jwrcz.cn http://www.morning.ssmhn.cn.gov.cn.ssmhn.cn http://www.morning.pqcbx.cn.gov.cn.pqcbx.cn http://www.morning.hwnnh.cn.gov.cn.hwnnh.cn http://www.morning.trsmb.cn.gov.cn.trsmb.cn http://www.morning.rwdbz.cn.gov.cn.rwdbz.cn http://www.morning.zdmlt.cn.gov.cn.zdmlt.cn http://www.morning.tturfsoc.com.gov.cn.tturfsoc.com http://www.morning.jwcmq.cn.gov.cn.jwcmq.cn http://www.morning.jkcnq.cn.gov.cn.jkcnq.cn http://www.morning.lmxrt.cn.gov.cn.lmxrt.cn http://www.morning.jnkng.cn.gov.cn.jnkng.cn http://www.morning.ljpqy.cn.gov.cn.ljpqy.cn http://www.morning.mttck.cn.gov.cn.mttck.cn http://www.morning.mdjzydr.com.gov.cn.mdjzydr.com