LeetCode ZigZag Conversion

2017-01-23  本文已影响5人  MelodyIsUVoice

解题思路

划一划就出来了,枚举下3和5的索引树就可以看出规律来。
第一行和最后一行为一类以初始位置递增(单一递增数列),其他行为一类(以初始两个位置分别递增,两个递增序列叠加)


/**
 * @param {string} s
 * @param {number} numRows
 * @return {string}
 * 
 * 1      9         17   8
 * 2    8 10     16 18   2 8
 * 3  7   11   15   19   3 7
 * 4 6    12 14     20   4 6
 * 5      13        21   5
 * 
 * 1   5   9     13 1  4
 * 2 4 6 8 10 12 14 2 4 4
 * 3   7   11    15 3  4
 * 
 */
var convert = function(s, numRows) {
    var re = "";
    for (var i = 0; i < s.length ; i += 2*numRows -2) {
        re += s[i]
    }
    for(i = 1;  i < numRows - 1; i++) {
        var k1 = i;
        var k2 = 2*numRows - i;
        while (k1 < s.length || k2 < s.length) {
            if (k1 < s.length) {
                re += s[k1];
                k1 += 2*numRows - 2;
            }
            if (k2 < s.length) {
                re += s[k2];
                k2 += 2*numRows - 2;
            }
        }
    }
    for (i = numRows; i < s.length; i += 2*numRows -2) {
        re += s[i];
    }
    return re;
};
上一篇下一篇

猜你喜欢

热点阅读