剑指 Offer 44. 数字序列中某一位的数字

简介: 剑指 Offer 44. 数字序列中某一位的数字

剑指 Offer 44. 数字序列中某一位的数字

class Solution {
public:
    int findNthDigit(int n) {
        int digit = 1;   //位数
        long start = 1;  //位数起始值
        long count = 9;
        while (n > count) { // 1.确定所求数位的所在数字的位数
            n -= count;
            digit += 1;   // 1, 10, 100, ...
            start *= 10;  // 1, 2, 3, ...
            count = digit * start * 9;
        }
        long num = start + (n - 1) / digit;           // 2.确定所求数位所在的数字
        return to_string(num)[(n - 1) % digit] - '0'; // 3.确定所求数位在num的哪一数位
    }
};


相关文章
|
4月前
剑指 Offer 44:数字序列中某一位的数字
剑指 Offer 44:数字序列中某一位的数字
13 0
|
4月前
剑指 Offer 03:数组中重复的数字
剑指 Offer 03:数组中重复的数字
13 0
|
4月前
剑指 Offer 11:旋转数组的最小数字
剑指 Offer 11:旋转数组的最小数字
21 1
|
4月前
|
索引
剑指 Offer 53 - II:0~n-1中缺失的数字
剑指 Offer 53 - II:0~n-1中缺失的数字
19 0
|
4月前
剑指 Offer 57 - II:和为s的连续正数序列
剑指 Offer 57 - II:和为s的连续正数序列
17 0
|
4月前
剑指 Offer 20:表示数值的字符串
剑指 Offer 20:表示数值的字符串
26 0
|
11月前
剑指offer 45. 数字序列中某一位的数字
剑指offer 45. 数字序列中某一位的数字
39 0
|
11月前
|
存储
剑指offer 63. 和为S的两个数字
剑指offer 63. 和为S的两个数字
53 0
|
12月前
|
算法 C++ Python
每日算法系列【LeetCode 233】数字 1 的个数
每日算法系列【LeetCode 233】数字 1 的个数