当前位置: 首页 > news >正文

leetcode 386. 字典序排数 中等

给你一个整数 n ,按字典序返回范围 [1, n] 内所有整数。

你必须设计一个时间复杂度为 O(n) 且使用 O(1) 额外空间的算法。

示例 1:

输入:n = 13
输出:[1,10,11,12,13,2,3,4,5,6,7,8,9]

示例 2:

输入:n = 2
输出:[1,2]

提示:

  • 1 <= n <= 5 * 10^4

分析:由于题目要求复杂度为 0,因此不能使用排序的方法。可以用 dfs 生成符合字典序排列的序列。不妨设当前符合字典序排列的整数是 number,它的下一个字典序整数对应下面的规则:

尝试在 number 后面附加一个零,即 number×10,如果 number×10≤n,那么说明 number×10 是下一个字典序整数;如果 number mod 10 = 9 或 number+1>n,那么说明末尾的数位已经搜索完成,退回上一位,即 number= number/10,然后继续判断直到 number mod 10<=9 且 number+1≤n 为止,那么 number+1 是下一个字典序整数。

字典序最小的整数为 number=1,我们从它开始,然后依次获取下一个字典序整数,加入结果中,结束条件为已经获取到 n 个整数。

/*** Note: The returned array must be malloced, assume caller calls free().*/
int* lexicalOrder(int n, int* returnSize) {int *ans=(int*)malloc(sizeof(int)*n);*returnSize=n;int index=1;for(int i=0;i<n;++i){ans[i]=index;if(index*10<=n)index*=10;else{while(index%10==9||index+1>n)index/=10;index++;}}return ans;
}
http://www.xdnf.cn/news/936595.html

相关文章:

  • Python爬虫实战:研究demiurge框架相关技术
  • 从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(十)
  • pgsql batch insert optimization (reWriteBatchedInserts )
  • Digital IC Design Flow
  • vue3:十六、个人中心-修改密码
  • bugku 网络安全事件应急响应
  • 02.管理数据库
  • CCPC guangdongjiangsu 2025 F
  • 【创新算法】改进深度优先搜索算法配合二进制粒子群的配电网故障恢复重构研究
  • 食养有方:进行性核上性麻痹患者的健康饮食指南
  • 解决SQL Server SQL语句性能问题(9)——SQL语句改写(2)
  • Linux系统防火墙之iptables
  • 工作记录 2017-08-01
  • 若依框架项目前缀配置
  • 如何在最短时间内提升打ctf(web)的水平?
  • Python安装使用教程
  • 实验三:VGA显示实验
  • JavaScript 数据类型详解
  • Razor编程中@Html的方法使用大全
  • Day25 异常处理
  • sizeof 与strlen的区别
  • Puppeteer测试框架 - Node.js
  • 解决transformers.adapters import AdapterConfig 报错的问题
  • Java中的抽象类
  • 【Redis】持久化
  • Redis知识体系
  • 【深度学习】表示学习:深度学习的数据解构与重构艺术
  • Effective Java 第三版 第二三章总结
  • Selenium自动化操作
  • Java中双端队列的多种实现类详解