剑指 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的哪一数位
    }
};


相关文章
【力扣每日一题】1365. 有多少小于当前数字的数字
【力扣每日一题】1365. 有多少小于当前数字的数字
|
22天前
剑指 Offer 44:数字序列中某一位的数字
剑指 Offer 44:数字序列中某一位的数字
14 0
|
22天前
剑指 Offer 11:旋转数组的最小数字
剑指 Offer 11:旋转数组的最小数字
23 1
|
22天前
剑指 Offer 03:数组中重复的数字
剑指 Offer 03:数组中重复的数字
14 0
|
22天前
剑指 Offer 57 - II:和为s的连续正数序列
剑指 Offer 57 - II:和为s的连续正数序列
19 0
|
22天前
剑指 Offer 56 - II:数组中数字出现的次数 II
剑指 Offer 56 - II:数组中数字出现的次数 II
23 0
|
22天前
剑指 Offer 56 - I:数组中数字出现的次数
剑指 Offer 56 - I:数组中数字出现的次数
20 0
|
12月前
剑指offer 45. 数字序列中某一位的数字
剑指offer 45. 数字序列中某一位的数字
40 0
|
12月前
|
存储
剑指offer 63. 和为S的两个数字
剑指offer 63. 和为S的两个数字
56 0
|
12月前
剑指offer 62. 数组中唯一只出现一次的数字
剑指offer 62. 数组中唯一只出现一次的数字
51 0