【做題步驟】
1、原題目
2、自己的第一遍解法
3、網(wǎng)上的好解法
4、自己可以改進(jìn)的地方
5、精簡(jiǎn)優(yōu)化自己的代碼直至無(wú)可精簡(jiǎn)
6、獲得的思考
anki記錄錯(cuò)題 & 關(guān)鍵解法/思路(數(shù)據(jù)結(jié)構(gòu)與算法總結(jié))、復(fù)習(xí)計(jì)劃
?6、Z字形變換
https://leetcode-cn.com/problems/zigzag-conversion/
【題目】
將一個(gè)給定字符串根據(jù)給定的行數(shù),以從上往下、從左到右進(jìn)行 Z 字形排列。
比如輸入字符串為 "LEETCODEISHIRING" 行數(shù)為 3 時(shí),排列如下:
L? C? I? R
E T O E S I I G
E? D? H? N
之后,你的輸出需要從左往右逐行讀取,產(chǎn)生出一個(gè)新的字符串,比如:"LCIRETOESIIGEDHN"。
請(qǐng)你實(shí)現(xiàn)這個(gè)將字符串進(jìn)行指定行數(shù)變換的函數(shù)。
我的解法:×
高級(jí)解法:使用 Math.min(numRows, s.length() 來(lái)表示 Z 字形圖案中的非空行。
從左到右迭代 ss,將每個(gè)字符添加到合適的行??梢允褂卯?dāng)前行和當(dāng)前方向這兩個(gè)變量對(duì)合適的行進(jìn)行跟蹤。
只有當(dāng)我們向上移動(dòng)到最上面的行或向下移動(dòng)到最下面的行時(shí),當(dāng)前方向才會(huì)發(fā)生改變。
?22、括號(hào)生成
【困難】?1163、按字典序排在最后的子串