最新要闻
- 当前快播:荷兰一男子疯狂捐精成550个孩子的爸爸:被判禁止捐精 再捐每次罚款76万
- 环球实时:吉利副总裁:不管极氪蔚来 中国品牌总要有一个打BBA的
- 当前简讯:男子订民宿被毁约 房东:住满了 没办法
- 定制长沙独家游玩攻略,大学生手绘旅游地图 世界今日讯
- 环球观点:自研“北斗高精”!百度地图宣布攻破“宇宙最难”8D重庆隧道导航
- 天天动态:米粉直呼Redmi Note 12 Turbo续航太顶:亮屏4小时耗电才33% 用的还是流量
- 焦点速递!斗图冯骥才看了答案。
- 《长空之王》无悬念领跑!五一档新片总票房破10亿元:你贡献多少?
- 赢麻了!DC:黑人版《超人》有望成为现实
- 金帝纯黑68%巧克力薄片2盒19.9元:浓醇美味
- 全球今亮点!山东齐鲁工业大学官网招生计划 山东齐鲁工业大学官网
- 【天天快播报】新系统基于鸿蒙!华为海外发布4G新机Nova 11i:搭载骁龙680、2200元
- 时讯:高速上2车追尾洒落大量现金 场面壮观:网友直呼想停车去捡 目击者称是冥币
- 气温骤降超10℃!新一轮冷空气来袭:局地暴雨大雪 环球快看
- 全球球精选!Win11虚拟桌面切换动画终于回归!可惜依然生硬
- 天天视讯!“五一”去怒江,穿越东方大峡谷
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
环球今热点:2023-05-01:给你一个整数 n , 请你在无限的整数序列 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...] 中找出并返回第 n 位上的数字。 1 <= n <=
(资料图片仅供参考)
2023-05-01:给你一个整数 n ,请你在无限的整数序列 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...]中找出并返回第 n 位上的数字。1 <= n <= 2^31 - 1。输入:n = 11输出:0解释:第 11 位数字在序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... 里是 0 ,它是 10 的一部分。
答案2023-05-01:
该程序的大体过程:
1.定义数组 under
和 help
,分别用于存储数字位数对应能处理的数的个数和指示各位数之间的跨度。
2.实现函数 findNthDigit
,其输入为整数 n
,表示要查找的数字在整数序列中的位置。根据 under
数组,找到包含第 n 个数字的区间长度 len
,并返回调用子函数 number
的结果。
3.实现函数 number
,其输入为当前路径 path
、数字的位数 len
、最高位的权重 offset
、最低位的权重 all
和从开始算起剩余的第几个数字 nth
。如果 offset
等于 0,则说明已经到达最低位,直接返回路径经过的值中的第 nth
个数字;否则,计算出当前节点 cur
取值(这可能需要根据 offset
来进行特殊处理),根据 all
和 offset
计算下一个节点的路径 cur*(all/offset)+path
,并递归地调用 number
函数。
4.在 main
函数中,定义一个整数变量 n
表示要查找的数字在整数序列中的位置,调用 findNthDigit
函数查找第 n
个数字,并输出结果。
时间复杂度和空间复杂度如下:
1.findNthDigit
函数中的循环需要遍历数组 under
,时间复杂度为 O(1) 平均时间复杂度为 O(log n);2. number
函数实现了一个递归结构,每次递归除去常数项的时间复杂度为 O(1), 递归深度为 O(log n),所以总时间复杂度为 O(log n);3.数组 under
和 help
的空间复杂度分别为 O(1),而递归调用 number
函数时,栈空间的最大使用量也为 O(log n)。因此,总的空间复杂度为 O(log n)。
综上所述,该算法的时间复杂度和空间复杂度均为 O(log n)。
go完整代码如下:
package mainvar under = []int64{0, 9, 189, 2889, 38889, 488889, 5888889, 68888889, 788888889, 8888888889, 98888888889,}var help = []int{0,1, // 110, // 2100, // 31000, // 410000,100000,1000000,10000000,100000000,1000000000,}func findNthDigit(n int) int {l := 0for i := 1; i < len(under); i++ {if under[i] >= int64(n) {l = ibreak}}return number(0, l, help[l], help[l], n-int(under[l-1]))}// path : 路径 左(低) <- 右(高)// len : n -> 5位数 len = 5 固定!// offset : 10000 目前要决定的是高1位// 1000 目前要决定的是高2位// 10 目前要决定的是高2位// 可变// all : 10000 固定// nth : 第几个func number(path, len, offset, all, nth int) int {if offset == 0 {return (path / help[nth]) % 10} else {j := (nth - 1) / (len * offset)cur := 0if offset == all {cur = 1}cur += jreturn number(cur*(all/offset)+path, len, offset/10, all, nth-j*len*offset)}}func main() {n := 11digit := findNthDigit(n)println(n, "th digit is", digit)}
rust完整代码如下:
static mut UNDER: [i64; 11] = [ 0, 9, 189, 2889, 38889, 488889, 5888889, 68888889, 788888889, 8888888889, 98888888889,];static mut HELP: [i32; 11] = [ 0, 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000,];fn find_nth_digit(n: i32) -> i32 { let under: &[i64; 11]; let help: &[i32; 11]; unsafe { under = &UNDER; help = &HELP; } let mut len = 0; for i in 1..under.len() { if under[i] >= n as i64 { len = i; break; } } number(0, len, help[len], help[len], (n - under[len - 1] as i32))}// path : 路径 左(低) <- 右(高)// len : n -> 5位数 len = 5 固定!// offset : 10000 目前要决定的是高1位// 1000 目前要决定的是高2位// 10 目前要决定的是高2位// 可变// all : 10000 固定// nth : 第几个fn number(path: i32, len: usize, offset: i32, all: i32, nth: i32) -> i32 { let help: &[i32; 11]; unsafe { help = &HELP; } if offset == 0 { return (path / help[nth as usize]) % 10; } else { let j = (nth - 1) / (len as i32 * offset); let cur = if offset == all { 1 } else { 0 } + j; return number( cur * (all / offset) + path, len, offset / 10, all, nth - j * len as i32 * offset, ); }}fn main() { unsafe { let n = 11; let digit = find_nth_digit(n); println!("{}th digit is {}", n, digit); }}
c完整代码如下:
#include const long under[] = {0L, // 0位数,一共能解决几个位9L, // 1位数,一共能解决几个位189L, // 1~2位数,一共能解决几个位2889L, // 1~3位数,一共能解决几个位38889L,488889L,5888889L,68888889L,788888889L,8888888889L,98888888889L};const int help[] = {0,1, // 110, // 2100, // 31000, // 410000,100000,1000000,10000000,100000000,1000000000};int findNthDigit(int n) {int len = 0;for (int i = 1; i < sizeof(under) / sizeof(long); i++) {if (under[i] >= n) {len = i;break;}}return number(0, len, help[len], help[len], n - under[len - 1]);}// path : 路径 左(低) <- 右(高)// len : n -> 5位数 len = 5 固定!// offset : 10000 目前要决定的是高1位// 1000 目前要决定的是高2位// 10 目前要决定的是高2位// 可变// all : 10000 固定// nth : 第几个int number(int path, int len, int offset, int all, int nth) {if (offset == 0) {return (path / help[nth]) % 10;}else {int j = (nth - 1) / (len * offset);int cur = (offset == all ? 1 : 0) + j;return number(cur * (all / offset) + path, len, offset / 10, all, nth - j * len * offset);}}int main() {int n = 11;int digit = findNthDigit(n);printf("%dth digit is %d\n", n, digit);return 0;}
c++完整代码如下:
#include using namespace std;const long under[] = {0L, // 0位数,一共能解决几个位9L, // 1位数,一共能解决几个位189L, // 1~2位数,一共能解决几个位2889L, // 1~3位数,一共能解决几个位38889L,488889L,5888889L,68888889L,788888889L,8888888889L,98888888889L};const int help[] = {0,1, // 110, // 2100, // 31000, // 410000,100000,1000000,10000000,100000000,1000000000};// path : 路径 左(低) <- 右(高)// len : n -> 5位数 len = 5 固定!// offset : 10000 目前要决定的是高1位// 1000 目前要决定的是高2位// 10 目前要决定的是高2位// 可变// all : 10000 固定// nth : 第几个int number(int path, int len, int offset, int all, int nth) {if (offset == 0) {return (path / help[nth]) % 10;}else {int j = (nth - 1) / (len * offset);int cur = (offset == all ? 1 : 0) + j;return number(cur * (all / offset) + path, len, offset / 10, all, nth - j * len * offset);}}int findNthDigit(int n) {int len = 0;for (int i = 1; i < sizeof(under) / sizeof(long); i++) {if (under[i] >= n) {len = i;break;}}return number(0, len, help[len], help[len], n - under[len - 1]);}int main() {int n = 11;int digit = findNthDigit(n);cout << n << "th digit is " << digit << endl;return 0;}
关键词:
-
环球今热点:2023-05-01:给你一个整数 n , 请你在无限的整数序列 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...]
2023-05-01:给你一个整数n,请你在无限的整数序列[1,2,3,4,5,6,7,8,9,10,11, ]中找出并返回第n位上的数
来源: 环球今热点:2023-05-01:给你一个整数 n , 请你在无限的整数序列 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...]
20 文件系统的格式化操作_世界聚看点
天天热点评!详解 HTTPS 概念
当前快播:荷兰一男子疯狂捐精成550个孩子的爸爸:被判禁止捐精 再捐每次罚款76万
环球实时:吉利副总裁:不管极氪蔚来 中国品牌总要有一个打BBA的
当前简讯:男子订民宿被毁约 房东:住满了 没办法
定制长沙独家游玩攻略,大学生手绘旅游地图 世界今日讯
Mac M芯片使用PD安装centos7无页面安装
环球观点:自研“北斗高精”!百度地图宣布攻破“宇宙最难”8D重庆隧道导航
天天动态:米粉直呼Redmi Note 12 Turbo续航太顶:亮屏4小时耗电才33% 用的还是流量
焦点速递!斗图冯骥才看了答案。
天天微速讯:C# 基础编程题集锦
最近公共祖先 倍增算法
《长空之王》无悬念领跑!五一档新片总票房破10亿元:你贡献多少?
赢麻了!DC:黑人版《超人》有望成为现实
金帝纯黑68%巧克力薄片2盒19.9元:浓醇美味
全球今亮点!山东齐鲁工业大学官网招生计划 山东齐鲁工业大学官网
【天天快播报】新系统基于鸿蒙!华为海外发布4G新机Nova 11i:搭载骁龙680、2200元
时讯:高速上2车追尾洒落大量现金 场面壮观:网友直呼想停车去捡 目击者称是冥币
气温骤降超10℃!新一轮冷空气来袭:局地暴雨大雪 环球快看
全球球精选!Win11虚拟桌面切换动画终于回归!可惜依然生硬
天天视讯!“五一”去怒江,穿越东方大峡谷
最低分辨率仅648P!《星战绝地:幸存者》PS5版优化同样翻车_环球微动态
关注:大学选课是啥_大学选课是什么意思
国内普工月薪1万块 父母看病报销!马斯克称特斯拉每个人都是工人 经济严重衰退将来临|全球球精选
今年五一国人太疯狂!珠穆朗玛峰凌晨两点还在堵 手冻肿还有人插队 观天下
新消息丨lua基础语法篇一
5年级上册语文书课文_5年级上册语文书
【天天新视野】《饥饿游戏》美女演员晒照反击黑客勒索:我想展示给谁看都行
《英雄联盟》人机“智商”将升级:会打野抢龙了-每日时讯
苹果的糖煮制脯技术 下_关于苹果的糖煮制脯技术 下的简介
人类希望!星舰并未失败 今年砸20亿美元重发射 马斯克详解爆炸细节厉害了
LC 3. 无重复字符的最长子串 全球实时
世界实时:SRIO接口卡航电总线解决方案
Java线程池中的四种拒绝策略
全球播报:我在画画的拼音_画画的拼音
这波太狠了!CMA禁止微软在未来10年内收购动暴 热点聚焦
世界看热讯:中文互联网青春流落“天涯”
资讯推荐:山东一景区霸气公告:看不到景观退款
天玑之王诞生!iQOO Neo8 Pro前瞻:性能霸榜安卓阵营
快看:真鞋底“烤机”!男子鞋里藏48块CPU入境被海关查获
速看:恐难回本:《圣斗士》电影日本上映3天票房仅250万
关于Linux系统-sshd服务-AllowUsers与AllowGroups-选项的安全加固配置
工厂方法与FactoryBean
9472米!我国开钻亚洲最深油气井
今日讯!apex英雄手游版什么时候上线 apex英雄手游上线时间一览
70%的人都没做到!夏季开空调前的这些事项必须做到位_环球新要闻
韩国芯片继续暴跌:三星等存储没人买!国产SSD无惧竞争 2TB杀到489元
全球微速讯:终于改了!微软决定减少Win11通知数量
海南一漂流景区五一堵船了 网友:好像在下饺子一样
短讯!孙晓玲
多亏了国产SSD!硬盘进入“白菜价”时代
当前资讯!3人合吃一份自助餐:服务员劝阻被怼
苹果华为小米OPPO和vivo手机壳只要5.9元起:覆盖上百款机型 总有一款适合你
回力2023春季新款老爹运动鞋到手29.9元起:舒适透气_全球看点
马里奥成就游戏改编作品之最_天天热资讯
“五一”假期第二天全国道路交通总体平稳有序-全球最新
马里奥成就游戏改编作品之最
环球快消息!疯狂!淄博烧烤店主为劝退游客自己刷差评 犄角旮旯里的烧烤店都能被发现
锐龙7000系烧毁问题解决:AMD推送AGESA 1.0.0.7 BIOS主板固件更新
2020赛季中超第一阶段第11轮苏州赛区的一场比赛 由河北华夏幸福对阵北京国安
国屏之光!京东方首发三百色域切换显示技术
环球消息!五一长沙排队:景点队伍排到隔壁景区 凌晨2点打车还得等位
Redmi 2023年快充之王来了!210W新机已在路上|天天通讯
QLC尚未普及HLC又来!写入寿命堪忧
生死狙击v8真号账号密码没人挤2022(生死狙击好号和密码v8真的电脑版)
读SQL进阶教程笔记14_SQL编程要点
全球热门:Android 14来了!本月登场
印度将成全球人口最多国家背后:年轻人多、文化程度太低
5G必要专利全球第一!网友分享华为5G工程测试手机 早开始实测 世界新视野
屋漏原指的是屋子西北角 而不是屋子漏了 环球看热讯
速讯:5月新规来了!官方出手整治互联网弹出广告:确保一键关闭
全球快资讯丨奥利瑟拉佐尔的烈焰之爪在哪里_奥利瑟拉佐尔的烈焰之爪
天天通讯!丁立人创造历史 中国棋手首次加冕世界棋王:奖金830多万
我做梦也没想到 华语乐坛竟以这种形式复兴了
一公司称“小气吧啦的特斯拉”“毛坯房汽车”!被判赔10万
神剧情!利物浦前15分钟3-0领先,热刺连追三球后遭若塔补时绝杀 天天速讯
《逆水寒手游》评测:这次呼吸不要钱了
重点聚焦!安徽工业大学怎么样 是二本吗一还
19 组织文件
焦点热讯:移位运算
特种兵式旅游引发热议 男子火车站拎1袋馒头沾方便面吃:该省省该花花 每日聚焦
五一假期才第2天网友已经玩累:敦煌“堵骆驼”了 还有红绿灯 天天快讯
林正英粤语电影黑白双煞 林正英粤语电影 天天即时看
关于PTA第二次大作业的总结-热点
世界微动态丨200公里开车11个半小时!女子吐槽五一旅游导航都堵紫了
环球观察:延庆治理有“妙招儿”,多举措解决杨柳飞絮烦恼~
联想65W氮化镓插排上架:出差不用带电源了 全球今日报
智能手机价格越来越贵 联发科CEO表态:不再打价格战
17 设备处理内核I/O包 天天看点
当前报道:车头神似动车组 理想纯电MPV假想图曝光
中国空间站将收到70公斤水果快递 天舟六号货运飞船5月上旬发射-全球视讯
Black Girl Gamers创始人批评幻想游戏:可以有龙 但不能有黑人
快看:征服世界最高沙峰!比亚迪仰望U8登顶必鲁图峰:不陷沙、不翻车 真越野
16 内核中注册设备_世界今亮点
PTA题目集4~6总结
全球热点评!详细的BoltDB学习记录文档
看点:OO题目集4-6总结
金融类都有什么-金融类都有什么专业 天天即时看
“五一”迎来客流高峰 各部门全力保障旅客出行