400. 第N個數字_面試題44. 數字序列中某一位的數字

問題
在這裏插入圖片描述

例子

在這裏插入圖片描述

思路
在這裏插入圖片描述

  • 方法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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章