6. ZigZag Conversion

這題是周六在石家莊等飛機(jī)時(shí)做的,boarding之前還NM在調(diào)試。。當(dāng)時(shí)題目理解就錯(cuò)了,不知道它說的zigzag其實(shí)是下面的意思:

/*n=numRows
Δ=2n-2    1                           2n-1                         4n-3
Δ=        2                     2n-2  2n                    4n-4   4n-2
Δ=        3               2n-3        2n+1              4n-5       .
Δ=        .           .               .               .            .
Δ=        .       n+2                 .           3n               .
Δ=        n-1 n+1                     3n-3    3n-1                 5n-5
Δ=2n-2    n                           3n-2                         5n-4
*/

理解了的話,代碼這樣寫:

    public String convert(String s, int nRows) {
        if (nRows == 0 || nRows == 1) return s;
        StringBuilder[] sb = new StringBuilder[nRows];
        for (int i = 0; i < nRows; i++) sb[i] = new StringBuilder();
        int i = 0;
        while (i < s.length()) {
            for (int row = 0; row < nRows && i < s.length(); row++) {
                sb[row].append(s.charAt(i++));//vertically down
            }
            for (int row = nRows - 2; row > 0 && i < s.length(); row--) {
                sb[row].append(s.charAt(i++));//obliquely up
            }
        }

        for (int j = 1; j < nRows; j++) {
            sb[0].append(sb[j]);
        }
        return sb[0].toString();
    }

這個(gè)跟是否zigzag都沒關(guān)系了,就理解成oblique的部分比descent的部分少兩個(gè)char就好了。時(shí)間和空間都是O(n)。

ref:
https://discuss.leetcode.com/category/14

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容