• 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;
    }
  • 相关阅读:
    汉明距离
    Go_go build 和 go install
    rabbitmq的简单介绍二
    rabbitmq的简单介绍一
    redis的订阅和发布
    python操作redis
    vmware虚拟机开机报附件中的错误的解决办法
    使用twised实现一个EchoServer
    python事件驱动的小例子
    mysql数据库的最基本的命令
  • 原文地址:https://www.cnblogs.com/agentgamer/p/6890659.html
Copyright © 2020-2023  润新知