zoukankan      html  css  js  c++  java
  • leetcode5

     顺次数

    我们定义「顺次数」为:每一位上的数字都比前一位上的数字大 1 的整数。

    请你返回由 [low, high] 范围内所有顺次数组成的 有序 列表(从小到大排序)。

    示例 1:

    输出:low = 100, high = 300
    输出:[123,234]
    

    示例 2:

    输出:low = 1000, high = 13000
    输出:[1234,2345,3456,4567,5678,6789,12345]
    

    提示:

    • 10 <= low <= high <= 10^9
    /**
     * @param {number} low
     * @param {number} high
     * @return {number[]}
     */
    var sequentialDigits = function(low, high) {
        const result = [];
        for (let i = 2; i < 10; i++) {
            for (let j = 1; j < 11 - i; j++) {
                let temp = 0;
                for (let k = 0; k < i; k++) {
                    temp = temp * 10 + k + j;
                }
                result.push(temp);
            }
        }
        return result.filter(item => item >= low && item <= high);
    };
    

      

    var sequentialDigits = function(low, high) {
        let highstr = high.toString()
        let lowstr = low.toString()
        let maxlen = highstr.length;
        let minlen = lowstr.length;
        const result = []
        L1:
        for(let i = minlen; i <= maxlen; i++) {
            L2:
            for (let j = 1; j <= 10-i; j++) {
                let str = ''
                let time = i
                let el = j
                while (time--) {
                    str += (el++).toString()
                }
                if (str > high) {
                    break L1
                }
                if (str < low) {
                    continue L2
                }
                result.push(str)
            }
        }
        return result
    };
    

      

    /**
     * @param {number} low
     * @param {number} high
     * @return {number[]}
     */
    // 复盘: // 最终还是没提交上去,差1~2分分钟,要不是可以排名靠前100余名,有大量参与者做了2道题,
    // 但是,很多人仅仅用了10几分钟就把这道题搞定。我足足用了80几分钟才做完。最后那几分钟,有个测试用例出现GC问题,
    // 其实是一个死循环导致的,后来又一个测试用例改了一下出现了第一个数字和第二个数字可能相同。我改前面的判断逻辑,改来改去还是问题。
    // 后来,时间到了,一想,还不如“去重”,一想代码量又有点多,最后也就几个代码判断是否往数组里面push相同的num,解决。伤感!!!! var sequentialDigits = function(low, high) { let res = []; let lowStr = String(low); let len = lowStr.length; let flag = true; for(let i=lowStr.length-1; i>=1; i--){ let l1 = lowStr[i]; let l2 = lowStr[i-1]; if(Number(l1)-Number(l2)!==1){ flag = false } } if(flag){ res.push(low) } let num = lowStr; let first = true; while(Number(num)<=high && num != '123456789'){ let f if(!first){ f = Number(num[0])+1; }else{ f = num[0]; } first = false; let len1 = len; num = ''; let index = 0; while(len1--){ if(num[num.length-1]==='9'){ if(len1 >= 9){ break; } num = ''; index = 0; f = 1; len++; len1 = len; continue; } // f = ; num+=Number(f)+index; index++; } let num1 = Number(num); if(low<=num1 && num1<=high){ if(res.indexOf(num1) === -1) res.push(num1) } } return res; };

      

  • 相关阅读:
    Cannot find module 'express'
    txt简单写入
    URLRewriter 伪静态配置Demo
    利用css的sticky特性实现固定首列其他列滚动
    金数据表单接口请求(php)
    Android应用app数据请求捕捉三步走
    go语言模块开发概念与cron定时事务模块的使用
    万维网的发明
    UEditor扩展又拍云图片存储功能实践
    Html5+移动端小应用分享(得见)
  • 原文地址:https://www.cnblogs.com/zhangzs000/p/12043725.html
Copyright © 2011-2022 走看看