• 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; };

      

  • 相关阅读:
    中国国家气象局天气预报信息接口
    windows文件同步到linux
    页面元素自适应
    js对浮点数计算的bug
    ajax跨域报错
    html5使用js确定用户坐标位置
    linux下rsync服务的搭建
    linux基本指令
    js控制页面刷新大全
    pdf在浏览器的显示问题
  • 原文地址:https://www.cnblogs.com/zhangzs000/p/12043725.html
Copyright © 2020-2023  润新知