zoukankan      html  css  js  c++  java
  • --算法恩仇录--实战篇--力扣(LeetCode)--006-Z字形变换--

    这题。。。没啥好分析的吧。。。模拟一下就行。

    关键要分析好模拟需要从哪儿开始转折。

    我使用的模拟是遍历一遍,将每一层分成多个字符串数组,最后进行拼接。

    吐槽一下:JavaScript的二维数组真的是有点懵~

    代码:

     1 function initArray(n) {  //创建二维数组
     2     var strs = new Array(n);
     3     for (var i = 0; i < n; i++) {
     4         strs[i] = new Array();
     5     }
     6     return strs;
     7 }
     8 var convert = function (s, numRows) {
     9     if(numRows === 1) return s;//如果只有一层,直接返回原字符串
    10     var strs = initArray(numRows), tmp = 0;//声明一个二维数组存储不同层数的字符串,tmp为当前为第几层
    11     var flg = 1; //标记z字方向,1表示从0-n-1;
    12     for (var i = 0; i < s.length; i++) {
    13         //console.log('s->: ' + s[i] + ' ','tmp:-> ' + tmp);
    14         strs[tmp] += s[i];
    15         //console.log('strs:-> ' + strs[tmp]);
    16         if (flg) {//判断z字方向
    17             if (tmp === numRows - 1) {//到达折点
    18                 flg = 0;
    19                 tmp-=2;
    20             }
    21             tmp++;
    22         }
    23         else {
    24             if (tmp === 0) {//到达折点
    25                 flg = 1;
    26                 tmp+=2;
    27             }
    28             tmp--;
    29         }
    30         
    31     }
    32     var str = '';
    33     for (var i = 0; i < strs.length; i++) {
    34         //console.log('strs->' + strs[i]);
    35         str += strs[i];
    36     }
    37     return str;
    38 };

    最后结果为:

    执行用时:128 ms, 在所有 JavaScript 提交中击败了38.83%的用户
    内存消耗:44.4 MB, 在所有 JavaScript 提交中击败了23.04%的用户
    离大侠再近一步!
  • 相关阅读:
    ios 截图图片
    更改AlertView背景
    如何卸载编译安装的源码包(mysql卸载)
    测试6
    curl 测试websocket请求 whitesky
    JVM中的垃圾收集
    Java面试题
    Java的四种引用
    一款吊炸天的AI图片增强工具!
    LiteFlow 2.6.4版本发行注记,里程碑版本!
  • 原文地址:https://www.cnblogs.com/Samo-Li/p/13600649.html
Copyright © 2011-2022 走看看