剑指 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. 有多少小于当前数字的数字
|
7月前
剑指 Offer 11:旋转数组的最小数字
剑指 Offer 11:旋转数组的最小数字
51 1
|
7月前
剑指 Offer 44:数字序列中某一位的数字
剑指 Offer 44:数字序列中某一位的数字
32 0
|
7月前
剑指 Offer 03:数组中重复的数字
剑指 Offer 03:数组中重复的数字
27 0
|
7月前
剑指 Offer 57 - II:和为s的连续正数序列
剑指 Offer 57 - II:和为s的连续正数序列
33 0
剑指offer 45. 数字序列中某一位的数字
剑指offer 45. 数字序列中某一位的数字
61 0
|
存储
剑指offer 63. 和为S的两个数字
剑指offer 63. 和为S的两个数字
78 0
剑指offer 62. 数组中唯一只出现一次的数字
剑指offer 62. 数组中唯一只出现一次的数字
73 0
|
算法 C++ Python
每日算法系列【LeetCode 233】数字 1 的个数
每日算法系列【LeetCode 233】数字 1 的个数