LeetCode 1291.顺次数:打表/枚举

【LetMeFly】1291.顺次数:打表/枚举

力扣题目链接:https://leetcode.cn/problems/sequential-digits/

我们定义「顺次数」为:每一位上的数字都比前一位上的数字大 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

解题方法:枚举/打表

枚举

12345678这种顺次数 最多有几十个,我们可以枚举所有的顺次数 ,如果在 l o w low low和 h i g h high high之间就加入答案数组,最终排个序返回即可。

如何枚举所有顺次数 ?首先枚举第一位,然后依次往这个数后面拼接下一位,制止拼接完 9 9 9位置。

打表

不用每个测试用例都重新枚举计算一遍所有的顺次数 ,直接初始化一个全局变量把所有顺次数存下来,每个测试用例只需要遍历就好了。

时空复杂度

  • 时间复杂度 O ( 1 ) O(1) O(1),只有几十个数,可以粗略地将复杂度视为 O ( 1 ) O(1) O(1)
  • 空间复杂度 O ( 1 ) O(1) O(1)

AC代码

C++ ------ 枚举
cpp 复制代码
/*
 * @LastEditTime: 2026-07-13 21:56:25
 */
class Solution {
public:
    vector<int> sequentialDigits(int low, int high) {
        vector<int> ans;
        for (int i = 1; i <= 9; i++) {
            int v = i;
            for (int j = i + 1; j <= 9; j++) {
                v = v * 10 + j;
                if (low <= v && v <= high) {
                    ans.push_back(v);
                }
            }
        }
        sort(ans.begin(), ans.end());
        return ans;
    }
};
C++ ------ 打表
cpp 复制代码
/*
 * @LastEditTime: 2026-07-13 22:07:09
 */
vector<int> good;

int _ = [] {
    for (int i = 1; i <= 9; i++) {
        int v = i;
        for (int j = i + 1; j <= 9; j++) {
            v = v * 10 + j;
            good.push_back(v);
        }
    }
    sort(good.begin(), good.end());
    return 0;
}();

class Solution {
public:
    vector<int> sequentialDigits(int low, int high) {
        vector<int> ans;
        for (int t : good) {
            if (low <=t && t <= high) {
                ans.push_back(t);
            }
        }
        return ans;
    }
};

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源

相关推荐
GreenTea3 分钟前
vLLM 与 SGLang KV Cache 底层实现机制深度调研报告
前端·后端·算法
Bode_200210 分钟前
多资源规划(含生产调度、库存管理及产能规划)的创新优化算法
算法·调度
土司大王1 小时前
LeetCode hot100——35.搜索插入位置:Java 二分模板、左闭右开区间与插入点分析
java·算法·leetcode
微三云生态系统架构师-彭丹1 小时前
远方好物S2B2C系统架构:一级分销与保证金托管的合规技术实现
人工智能·算法
土司大王1 小时前
LeetCode hot100——34.在排序数组中查找元素的第一个和最后一个位置:Java 二分模板、边界分析
java·算法·leetcode
罗西的思考3 小时前
机器人模型(WM / WAM / VLA)综合分析与对比:从「看」到「想」再到「做」
人工智能·算法·机器学习
小哈里4 小时前
【知识】从学科到实践:自然・工程・社科・人文|算法・研发・产品・品牌设计
程序人生·算法·产品·设计·工程
小π军5 小时前
最大重叠区间数量
数据结构·算法
镜像视界(浙江)科技有限公司5 小时前
《视频孪生之上:二维展示终结,三维空间计算重构城市逻辑》——跨摄像连续表达 × 三角测量厘米级定位 × 动态轨迹建模,构建新一代城市空间
大数据·人工智能·算法·矩阵·音视频·空间计算
a187927218315 小时前
【算法】双指针与滑动窗口(二):滑动窗口——吃进、判定、吐出
算法·leetcode·双指针·滑动窗口·原理·模板·算法讲解