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

机械设备上海网站建设泰州做网站软件

机械设备上海网站建设,泰州做网站软件,wordpress标签别名,小程序后端开发教程文章目录题目思路代码复杂度分析致谢题目 数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中#xff0c;第5位#xff08;从下标0开始计数#xff09;是5#xff0c;第13位是1#xff0c;第19位是4#xff0c;等等。 请写一个函数#xff0c… 文章目录题目思路代码复杂度分析致谢题目 数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中第5位从下标0开始计数是5第13位是1第19位是4等等。 请写一个函数求任意第n位对应的数字。 思路 我们注意到如果 将 01234567891⋯ 中的每一位称为 位 记为 n 将 10,11,12,⋯ 称为 数字 记为 num 数字 10 是一个两位数称此数字的 位数 为 2 记为 digit 每 digit 位数的起始数字即1,10,100,⋯记为 start 。个位数共有 1 ~ 9 九个数字称个位数的 数字数量 为 9 记为 num_count 。十位数共有 10~99 90个数字每个数字有两位共占序列化 90*2180 位称十位数的 数位数量 为 180 记为 count 。 可以得到下表个位数不计入0 数字范围位数数字数量共占序列化多少位1~919910~99290180100~99939002700……………………start~enddigit9*start9 * start * digit 可以得到三个公式 位数递推公式 digit digit 1起始数字递推公式 start start * 10数字数量计算公式 num_count 9 * start数位数量计算公式 count 9 * start * digit 我们可以将求 第n位对应的数字 求解过程分为以下几步 确定 n 所在 数字 的 位数digit 确定 n 所在的 数字num 确定 n 是 num 中的哪一位。 第一步 在几位数的范围内 while(ncount){n - count;start * 10;digit;count 9*start*digit; }第二步 是哪个数字 int num start(n-1)/digit;为什么是 (n-1)/digit 而不是 n/digit 首先看一张图 以两位数为例当执行完 nn-9 之后n 与各个两位数数位的对应关系如上图所示。以13为例当我们知道 n713中的1 时由 n/23 可得 n 是十位数起始数字之后的第三个但是当 n813中的3 时由 n/24 得到 n 对应的是十位数起始数字之后的第四个这是错误的十位数起始数字之后的第四个是 14 而非 13 因此计算时需要将 n 进行 减一操作因为我们将起始数字看作 第0个数 而非 第1个数 。 为什么是 (n-1)/digit 而不是 n/digit-1 仍然以两位数为例当 n 对应非起始数字时两种算法是没有区别的但是当 n 对应起始数字时不论 n0 or n1 (n-1)/digit 的计算结果都为 0 而 n/digit-1 的计算结果都为 -1 。 (n-1)/digit 对应的数字 num start 0 10 正确而 n/digit-1 对应的数字 num start (-1) 9 变成了个位数错误。 总而言之对 n 进行 减一操作 是因为 起始数字应视为 start 0虽然它是两位数里面的 第一个 数字但是我们在公式里说的 第几个 是 该数字相对于起始数字 而言的因此要统统减一。而之所以不是 先除再减 而是 先减再除 是因为 要考虑逻辑顺序对起始数字的影响 。 第三步 处于对应数字的哪一位 num s[(n-1)%digit] - 0;(n-1)%digit 计算的便是对应的 数位 n减一的原因和第二步中相同不再赘述。 代码 class Solution { public:int findNthDigit(int n) {long long start1, count9, digit1;while(ncount){n - count;start * 10;digit;count 9*start*digit;}int num start(n-1)/digit;//所在数字string s to_string(num);num s[(n-1)%digit] - 0;//处于所在num的哪一位return num;} };复杂度分析 时间复杂度 O(logn) 所求数位 n 对应数字 num 的位数 digit 最大为 O(log n) 第一步最多循环 O(log n) 次第三步中将 num 转化为字符串使用 O(log n) 时间因此总体为 O(log n) 。 空间复杂度 O(logn) 将数字 num 转化为字符串 str(num) 占用 O(logn) 的额外空间。 致谢 思路中的部分想法、复杂度分析源于K神的题解鞠躬致谢。
http://www.yutouwan.com/news/398467/

相关文章:

  • 合肥网站优化技术教育直播网站建设
  • 怎么利用360域名做网站网站建设 58同城
  • 开o2o网站需要什么手续在本地搭建多个网站
  • 做网站报价出名的江西电信网站备案
  • 跨境电商平台网站wordpress分级菜单
  • 网站服务器自己做设计页面宽度
  • 中山金舜家庭用品有限公司怎样网站地图北京工程造价信息网官网
  • 阿里巴巴网站建设的态度虚心成都人才网站建设
  • 青岛网络推广公司哪家好百度关键词优化排名技巧
  • 大连网站开发 简维科技直装模板下载
  • 网站维护建设招标免费推广网站都有哪些
  • 潍城区住房和城乡建设局网站东莞网站案例营销
  • 重庆市城乡建设施工安全管理总站网站网站一般宽度
  • 云主机安装多个网站自己做网站卖产品怎么样
  • 网站过期就可以抢注vue如何网站开发
  • 网站建设 - 碧诺网络WordPress 要求
  • 安装wordpress用什么宁波seo如何做推广平台
  • 漂亮的蓝色网站网站建设 英语翻译
  • 高端建站咨询建设信用卡手机银行官方网站
  • 网站建设公司广告长沙旅游景点大全排名
  • 做技术一般逛那些网站网站建设网页制作软件
  • wordpress建影视网站上什么网站做会计教育
  • 厂房网行业门户网站建设策划方案ppt网站建设的资料的准备
  • wordpress 自助建站微信小程序加盟哪个好
  • 河北省建设工程安全生产监督管理网站在阿里巴巴上做网站要多少钱
  • tp5.1做的网站上海建设公司
  • 厦门网站开发比较大的公司短网址源码wordpress
  • 重庆网站排名外包成立一家公司的基本流程
  • 三屏合一网站建设软件技术是干嘛的
  • 外贸公司网站改版思路网站建设在电子商务中意义