zoukankan      html  css  js  c++  java
  • ZigZag Conversion

    https://leetcode.com/problems/zigzag-conversion/#/description

    我把这题分成了两个问题。基本思路是:有多少rows要zigzag 就弄多少个数组,所以zigzag 不过就是在这些数组间往返添加元素而已。

    所以第一个问题是,如何找出一个数组的往返index;第二个问题就简单了,用往返index 拿到特定的数组,然后往里面添加字符。

    求往返index

    这个试了几个方案都失败了最后是列了几个表,把n=1, n=2, n=3, n=4 的表都列出来

    找到规律是每2*n - 2 个元素后开始有规律的重复,这样找到规律就简单了。

    function zigzagIndex(i, n) {
        if (n == 1) return 0;
        var loop = 2*n - 2;
        var i_p = i % loop;
        var residual = i_p - (n - 1);
        if (residual > 0) {
            return (n - 1 - residual);
        }
        return i_p;
    }
    
    var convert = function(s, numRows) {
        var rows = [];
        for (var i = 0; i < numRows; i++) {
            rows.push([]);
        }
        for (var i = 0; i < s.length; i++) {
            var row = rows[zigzagIndex(i, numRows)];
            row.push(s[i]);
        }
        var ret = '';
        for (var i = 0; i < numRows; i++) {
            ret += rows[i].join('');
        }
        return ret;
    }
  • 相关阅读:
    TEN
    out.println()、document.write()、document.getelementbyid()
    正则表达式
    DOM与BOM
    伪类和伪元素
    Grid(未完全完成)
    position
    表单
    API,WEB API
    Event Flow
  • 原文地址:https://www.cnblogs.com/agentgamer/p/6890659.html
Copyright © 2011-2022 走看看