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