美文网首页
400. Nth Digit

400. Nth Digit

作者: matrxyz | 来源:发表于2018-01-17 07:03 被阅读0次

    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.

    Solution:

    思路:
    Straight forward way to solve the problem in 3 steps:

    find the length of the number where the nth digit is from
    find the actual number where the nth digit is from
    find the nth digit and return

    Time Complexity: O(N) Space Complexity: O(1)

    Solution Code:

    class Solution {
        public int findNthDigit(int n) {
            int len = 1;
            long count = 9;
            int start = 1;
    
            while (n > len * count) {
                n -= len * count;
                len += 1;
                count *= 10;
                start *= 10;
            }
    
            start += (n - 1) / len;
            String s = Integer.toString(start);
            return Character.getNumericValue(s.charAt((n - 1) % len));
        }
    }
    

    相关文章

      网友评论

          本文标题:400. Nth Digit

          本文链接:https://www.haomeiwen.com/subject/pmlyoxtx.html