栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

力扣每日一题2021-11-30第N位数字

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

力扣每日一题2021-11-30第N位数字

第N位数字
  • 400.第N位数字
    • 题目描述
    • 思路
      • 模拟
        • Python实现
        • Java实现


400.第N位数字 题目描述

第N位数字


思路 模拟

很容易能发现如下规律:

1位数有9个,共有19个数字
2位数有90个,共有2
90个数字
3位数有900个,共有3*900个数字

如果想知道第N为数字,相当于要找到它是几位数,在那位数中是第几个数字,然后找到这个数字的第几位。

Python实现

class Solution:
    def findNthDigit(self, n: int) -> int:
        cur, base = 1, 9
        while n > cur * base:
            n -= cur * base
            cur += 1
            base *= 10
        n -= 1
        num = 10 ** (cur -1) + n // cur
        idx = n % cur
        return num // (10 ** (cur - 1 - idx)) % 10
Java实现

class Solution {
    public int findNthDigit(int n) {
        int cur = 1, base = 9;
        while (n > cur * base) {
            n -= cur * base;
            cur ++;
            base *= 10;
            if (Integer.MAX_VALUE / base < cur) {
                break;
            }
        }
        n --;
        int num = (int)Math.pow(10, cur-1) + n / cur, idx = n % cur;
        return num / (int)Math.pow(10, cur - 1 - idx) % 10;
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/618670.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号