400. 第N个数字_面试题44. 数字序列中某一位的数字

问题
400. 第N个数字_面试题44. 数字序列中某一位的数字_第1张图片

例子

400. 第N个数字_面试题44. 数字序列中某一位的数字_第2张图片

思路
400. 第N个数字_面试题44. 数字序列中某一位的数字_第3张图片

  • 方法1
    $$

    $$

    1. 确定位数【i位数共有多少位数字:10*(i-1)9i】
    2. 确定所在的数字
    3. 确定是哪一位数
  • 方法2
    $$

    $$

代码

//方法1
class Solution {
    public int findNthDigit(int n) {
        //所在数字是i位
        int i=1;
        //当n为10^9时,区间最大值>Integer.MAX_VALUE
        while(n > (long)Math.pow(10,i-1)*9*i) {
            n-=(long)Math.pow(10,i-1)*9*i;
            i++;
        }
        
        //是哪一个数字 10^(i-1)是i位数的起始数字 如:2位数 10
        //n为第几个数,n-1为下标,(n-1)/i 数坐在的下标 (n-1)%i在i长度中的下标
        long num = (int)Math.pow(10,i-1)+(n-1)/i;
        String s = String.valueOf(num);
     
        return s.charAt((n-1)%i)-'0';

    }
}
//方法2

你可能感兴趣的:(medium,leetcode,剑指offer)