leetcode 400 Add to List 400. Nth Digit

Posted いいえ敗者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 400 Add to List 400. Nth Digit相关的知识,希望对你有一定的参考价值。

Find the nth digit of the infinite integer sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...

Note:
n is positive and will fit within the range of a 32-bit signed integer (n < 231).

Example 1:

Input:
3

Output:
3

 

Example 2:

Input:
11

Output:
0

Explanation:
The 11th digit of the sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... is a 0, which is part of the number 10.

这道题目我之前见过。。。。一开始用下边注释的代码写,也通过了不过有点费时。后来改成取模。

class Solution {
public:
    int findNthDigit(int n) {
    // 2: 90 3:900 4: 9000 5:90000 6: 900000 7:9000000 8:90000000 9:900000000 10:9000000000
        long x = 1;
        long t = 9;
        if (n < 10) return n;
        while (n > x * t) {
            n -= x * t;
            x++;
            t *= 10;
        }
        long sum = 0;
        int m = n % x;
        if (m == 0) return ((long)pow(10.0,x-1) + n/x - 1)%10;
        else {
            long q = (pow(10.0, x-1) + (n/x)  );
            for (int j = 0; j < x - m; ++j) q/=10;
            return q%10;
        }
        /*
        for (int i = 0; i < t; ++i) {
            sum += x;
            if (sum == n) {
                return (i  % 10);
            }
            else if (sum > n) {
                long y = sum - n;
                long z = pow(10.0,(x - 1)) + i;
                cout <<z;
                for (int j = 0; j < y; ++j) {
                    z /= 10;
                }
                return z%10;
            }
        }
        */
    }
};

 

以上是关于leetcode 400 Add to List 400. Nth Digit的主要内容,如果未能解决你的问题,请参考以下文章

leetcode 212. Word Search II Add to List 查找单词---------- java

LeetCode 25 Reverse Nodes in k-Group Add to List 划分list

leetcode Add to List 31. Next Permutation找到数组在它的全排列中的下一个

LeetCode:Different Ways to Add Parentheses

LeetCode 623. Add One Row to Tree

add-to-list '加载路径似乎不起作用