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

四合一营销型网站网站建设大作业

四合一营销型网站,网站建设大作业,吉林黄页电话查询,wordpress电子商务视频教程【LetMeFly】386.字典序排数:细心总结条件 力扣题目链接:https://leetcode.cn/problems/lexicographical-numbers/ 给你一个整数 n ,按字典序返回范围 [1, n] 内所有整数。 你必须设计一个时间复杂度为 O(n) 且使用 O(1) 额外空间的算法。…

【LetMeFly】386.字典序排数:细心总结条件

力扣题目链接:https://leetcode.cn/problems/lexicographical-numbers/

给你一个整数 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 * 104

解题方法:if-else

解题思路

使用O(1)的空间和O(n)的时间完成本题,不如先想想字典序下到底是个什么顺序。

  1. 首先是1、10、100、…,直到即将大于n为止(假设n=200,那么100即将大于n(100*10=1000))
  2. 100后接着是101、102、…109
  3. 109之后是11(而不是110),之后进入第一步(11、110、…)

基本上就这三种情况。

具体做法

使用一个变量now记录当前的值,如果 n o w × 10 ≤ n now\times 10\leq n now×10n就让 n o w × 10 now\times 10 now×10,否则:

就让 n o w + 1 now+1 now+1。特别的,在 n o w + 1 now+1 now+1之前,若 n o w now now的最后一位已经是 9 9 9或者 n o w now now已经等于了 n n n,就不断移除 n o w now now的最后一位(109变成10)。

时空复杂度分析

  • 时间复杂度 O ( n ) O(n) O(n)
  • 空间复杂度 O ( 1 ) O(1) O(1)

AC代码

C++
/** @Author: LetMeFly* @Date: 2025-06-09 10:09:21* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-06-09 10:15:25*/
class Solution {
public:vector<int> lexicalOrder(int n) {vector<int> ans(n);int now = 1;for (int i = 0; i < n; i++) {ans[i] = now;if (now * 10 <= n) {now *= 10;} else {while (now % 10 == 9 || now == n) {now /= 10;}now++;}}return ans;}
};
Python
'''
Author: LetMeFly
Date: 2025-06-09 10:09:21
LastEditors: LetMeFly.xyz
LastEditTime: 2025-06-09 10:21:53
'''
from typing import Listclass Solution:def lexicalOrder(self, n: int) -> List[int]:ans = [0] * nnow = 1for i in range(n):ans[i] = nowif now * 10 <= n:now *= 10else:while now % 10 == 9 or now == n:now //= 10now += 1return ans
Java
/** @Author: LetMeFly* @Date: 2025-06-09 10:09:21* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-06-09 22:00:48*/
import java.util.List;
import java.util.ArrayList;class Solution {public List<Integer> lexicalOrder(int n) {List<Integer> ans = new ArrayList<>();for (int now = 1, i = 0; i < n; i++) {ans.add(now);if (now * 10 <= n) {now *= 10;} else {while (now % 10 == 9 || now == n) {now /= 10;}now++;}}return ans;}
}
Go
/** @Author: LetMeFly* @Date: 2025-06-09 10:09:21* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-06-09 22:03:40*/
package mainfunc lexicalOrder(n int) []int {ans := make([]int, n)for now, i := 1, 0; i < n; i++ {ans[i] = nowif now * 10 <= n {now *= 10} else {for now % 10 == 9 || now == n {now /= 10}now++}}return ans
}

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

千篇源码题解已开源

http://www.dtcms.com/wzjs/541404.html

相关文章:

  • 注册网站会员wordpress 主题 pdf
  • seo站长logo设计在线生成免费网站
  • 定制类做网站多少钱网站内链技巧
  • 如何查找同行网站做的外链php装修网站源码
  • 网站建设颜色注意事项特色的佛山网站建设
  • 商务信息网国内做seo公司简介
  • 女做受视频网站软件的开发文档
  • 关于加强门户网站建设的通知做网站是如果盈利的
  • 网站建设推广有没有军队采购网官网
  • 学网站建设难微商城是正规的平台吗
  • 住房和建设部网站济南网站建设招聘
  • 查询网站空间个人可以做淘宝客网站吗
  • 西安网站建设制作 熊掌号分类网站作用
  • 可以做外国网站文章广州天成网络技术有限公司
  • 最大的开源网站集团网站策划方案
  • 北京网站制作官网网站标题怎样写
  • 网站案例响应式网站建设实训个人总结3000
  • 网页字体网站网络服务器是指为网络提供资源
  • 苏州 网站的公司哪家好信息爆炸的时代做网站
  • 青岛谷歌网站建设无极在线网站播放
  • wordpress站长深圳迈瑞医疗器械有限公司官网
  • 广州网站建设优化方案网站公司网站开发方案
  • 网站开发全流程图通化县建设局网站
  • 行业网站建设哪家专业app手机网站
  • 北京朝林建设集团网站网络营销方案流程
  • 嘉兴做网站个人网页设计作品手绘
  • 中网可信网站权威数据库软件开发工具的基本功能是什么
  • 佛山市建设企业网站服务机构注册网站的免费网址是什么
  • dede 如何做视频网站深圳市建筑有限公司
  • 网站备案 中国网站建设技术维护一年合同