给定一个整数 n, 返回从 1 到 n 的字典顺序。

例如,

给定 n =13,返回 [1,10,11,12,13,2,3,4,5,6,7,8,9] 。

请尽可能的优化算法的时间复杂度和空间复杂度。 输入的数据 n 小于等于 5,000,000。

根据题目描述,所谓字典顺序,即数值按照类似字符串首字母的ASCII大小进行排序
那么数值的字典序即为一个十叉树,比如以1为树顶的树状形式如下:
1

10 11 … 19
|\ \
100 101 102…109

可以看到第一层第一个数 1 和第二层之间的计算方式:
1 *10 + (1…9)
第二层 第一个树 100 和第三层之间的计算方式
10*10 + (1…9)

综上我们可以实现 n 以内的字典排序数如下:

vector<int> lexicalOrder(int n) {vector<int> res;int cur = 1;for (int i = 1;i <= n; i++) {res.push_back(cur);/*深度优先,查找第一颗子树的节点,大小在n以内*/if(cur * 10 <= n) { cur *= 10;}else {if(cur >= n){cur /= 10;}cur += 1;/*处理子树切换时的场景:例如19 --> 2 1999 --> 2 */while(cur % 10 == 0) {cur /= 10;}}}return res;
}

leetcode-386 字典序排数相关推荐

  1. LeetCode 386. 字典序排数(DFS循环)

    1. 题目 给定一个整数 n, 返回从 1 到 n 的字典顺序. 例如, 给定 n =1 3,返回 [1,10,11,12,13,2,3,4,5,6,7,8,9] . 请尽可能的优化算法的时间复杂度和 ...

  2. LeetCode Algorithm 386. 字典序排数

    386. 字典序排数 Ideas 字典序排序嘛,先生成一个数字数组,然后转成字符串类型,再排一下序,之后再转回整数数组,return就可以了. Code Python from typing impo ...

  3. leetcode 386. Lexicographical Numbers | 386. 字典序排数(Java)

    题目 https://leetcode.com/problems/lexicographical-numbers/ 题解 思路:先序遍历 10 叉树,参考:Simple Java DFS Soluti ...

  4. Leetcode每日一题386. 字典序排数

  5. LeetCode 字典序排数(最优解法,不接受反驳)

    给定一个整数 n, 返回从 1 到 n 的字典顺序. 例如, 给定 n = 13,返回 [1,10,11,12,13,2,3,4,5,6,7,8,9] . 请尽可能的优化算法的时间复杂度和空间复杂度. ...

  6. LeetCode实战:两数相加

    题目英文 You are given two non-empty linked lists representing two non-negative integers. The digits are ...

  7. LeetCode(1.俩数之和)JAVA

    LeetCode(1.俩数之和) 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是 ...

  8. 排列组合十一个性质公式及证明,错排数公式及证明

    文章目录 排列数 组合数 求组合数常用公式 定义式 递推式 杨辉三角 组合数常用性质及证明 性质一 性质二 性质三 性质四(二项式定理) 性质五 性质六 性质七 性质八 性质九 性质十 性质十一 错排 ...

  9. [SDOI2016]排列计数 (错排数概念 + 递推公式【附带证明】)

    辛勤二更 题目 题解 错排数概念 错排数递推公式及其证明 代码实现 这种题做的时候: 做完后:正常这就是生活,我们要学会习惯 题目 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n ...

最新文章

  1. 国内首部高尔夫商战小说《手腕》(林健锋著)
  2. python四大软件-传智播客解析Python之移动端页面适配四大方式
  3. java catch 空指针异常_关于Java:捕获空指针异常
  4. java复选框没被选择,在CodenameOne中,为什么没有选中复选框但显示为选中状态?...
  5. Android recyclerView/listview的点击变色、点击换背景颜色
  6. Java线程中关于Synchronized的用法
  7. Zabbix-3.0.0 安装Graphtree
  8. 工作144:时间戳格式化
  9. 光轴会聚模型求解世界坐标点流程与公式理解
  10. 文本检测算法新思路:基于区域重组的文本检测
  11. const变量生存周期_CTM期刊 |神经胶质瘤中HOTAIREZH2抑制剂AQB能上调CWF19L1并促进CDK4/6抑制剂帕博西尼对细胞周期的抑制...
  12. libjpeg学习2:内存篇
  13. Winson.Framework 1.5发布!
  14. 训练集误差和验证集误差
  15. 杨歌:金融电路与 Web3 经济模型原理
  16. qcom vfe笔记(msm8996平台)
  17. Win10系统更新后开机密码错误怎么解决?
  18. hadoop 任务运行到running job就卡住了 INFO mapreduce.Job: Running job: job_XXXXXXX
  19. Direct3D 12工作原理概述
  20. Quartus Prime 19.1 下载教程

热门文章

  1. Java IO流学习总结四:缓冲流-BufferedReader、BufferedWriter
  2. 百度地图JavaScript API自定义覆盖物、自定义信息窗口增删时的显示问题
  3. zoj 1010 (线段相交判断+多边形求面积)
  4. hdu-4302-Holedox Eating-线段树-单点更新,有策略的单点查询
  5. .net实现跨页面传值
  6. xcode 4.3.2 use storyboard创建TableView
  7. 搜集《ASP.NET中常用的26个优化性能方法》
  8. 重大要素改变中的机会选择包括_财务人员专业胜任能力要素及框架
  9. OpenCV+python:像素运算
  10. perl语言编程 第四版_2020年,5 种 将死的编程语言!