6 Z字形變換 Leetcode刷題 C

2021-10-20 07:11:35 字數 745 閱讀 1207

我自己的做法是將對於z字形排列的每一行,遍歷字串,然後根據下標與numrows的關係加到result字串中,這樣空間複雜度為o(1),但是這樣時間複雜度是o(m*n)。

**:

class solution }}

return result;}};

結果:

執行用時:100 ms, 在所有 c++ 提交中擊敗了7%的使用者

記憶體消耗:7.9 mb, 在所有 c++ 提交中擊敗了96%的使用者

然後看解析發現一種以空間換時間的演算法,新建乙個vector,首先遍歷字串,按照下標與numrows的關係將每個字元排序到vector中,最後將其取出構建新的字串。

class solution 

if(ans % 2 != 0)

}for(int i = 0; i < temp.size(); i++)

return result;}};

這樣時間複雜度為o(n),空間複雜度為o(n)。

結果:

執行用時:4 ms, 在所有 c++ 提交中擊敗了98.48%的使用者

記憶體消耗:10.5 mb, 在所有 c++ 提交中擊敗了52.68 %的使用者

6 Z 字形變換 leetcode

將乙個給定字串根據給定的行數,以從上往下 從左到右進行 z 字形排列。比如輸入字串為 leetcodeishiring 行數為 3 時,排列如下 l c i r e t o e s i i g e d h n之後,你的輸出需要從左往右逐行讀取,產生出乙個新的字串,比如 lciretoesiigedh...

6 Z字形變換

一 題目 將字串 paypalishiring 以z字形排列成給定的行數 p a h n a p l s i i g y i r之後從左往右,逐行讀取字元 pahnaplsiigyir 實現乙個將字串進行指定行數變換的函式 string convert string s,int numrows 示例...

6 Z字形變換

將字串 paypalishiring 以z字形排列成給定的行數 p a h n a p l s i i g y i r 之後從左往右,逐行讀取字元 pahnaplsiigyir 示例1 輸入 s paypalishiring numrows 3 輸出 pahnaplsiigyir 示例 2 輸入 s...