其他分享
首页 > 其他分享> > 1291. 顺次数

1291. 顺次数

作者:互联网

1291. 顺次数

这种量少的题最简单快捷的方法就是打表。

class Solution {
    public List<Integer> sequentialDigits(int low, int high) {
        int[] cur = new int[]{12,23,34,45,56,67,78,89,123,234,345,456,567,678,789,1234,2345,3456,4567,5678,6789,
        12345,23456,34567,45678,56789,123456,234567,345678,456789,1234567,2345678,3456789,12345678,23456789,123456789};
        List<Integer> res = new ArrayList<>();
        for (int i : cur) {
            if (i >= low && i <= high) {
                res.add(i);
            }
        }
        return res;
    }
}

不考虑打表的话可以采用滑动窗口的思路,题目要求的数字显然是“123456789”的一个子数组(连续),那么我们可以从“123456789”中截出大小范围在low和high之间的数。

class Solution {
    public List<Integer> sequentialDigits(int low, int high) {
        List<Integer> res = new ArrayList<>();
        String s = "123456789";
        for(int i = 1; i <= 9; i++) {
            for(int j = 0; j + i <= 9; j++) {
                int num = Integer.parseInt(s.substring(j, j + i));
                if (low <= num && high >= num) {
                    res.add(num);
                }
            }
        }
        return res;
    }
}

可以优化一下窗口长度,但是数据量很小也没必要了。

原文:https://leetcode.cn/problems/sequential-digits/solution/bao-li-mei-ju-by-nice-hermann9a2-uqrc/

标签:int,res,List,次数,low,123456789,new,1291
来源: https://www.cnblogs.com/liangren-na/p/16437669.html