給你乙個整數n
,請你在無限的整數序列[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...]
中找出並返回第n
位數字。
示例 1:
輸入:n = 3輸出:3示例 2:
輸入:n = 11輸出:0解釋:第 11 位數字在序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... 裡是0,它是 10 的一部分。思路:
假設數字位數為len,則位數為len的數字範圍是,說明位數為len的所有數字長度為9* 10(len-1),先得到目標位置所屬數字的長度,再得到目標位置所屬數字,繼而得出目標位置在所屬數字的最終位置,就可以得到第n位數字
public static int findnthdigit(int n)
// 得到位數為len的第乙個起始數字, 1,10,100,1000.etc
int basenumber = (int) math.pow(10, len - 1);
// 目標位置所屬的數字,
// 從起始數字到目標所屬數字範圍內的所有數字長度相等,均為len,從而可以得到目標位置所屬數字
int number = (n - 1) / len + basenumber;
// 得到目標位置在所屬數字的位置
int mod = (n - 1) % len;
// 得到第n位數字
return string.valueof(number).charat(mod) - '0';
}
執行結果findnthdigit demo01 result : 3
findnthdigit demo02 result : 0
LeetCode400 第N個數字
在無限的整數序列 1,2,3,4,5,6,7,8,9,10,11,中找到第 n 個數字。注意 n 是正數且在32為整形範圍內 n 231 示例 1 輸入 3 輸出 3 示例 2 輸入 11 輸出 0 說明 第11個數字在序列 1,2,3,4,5,6,7,8,9,10,11,裡是0,它是10的一部分。...
Leetcode 400 第N個數字 C
在無限的整數序列 1,2,3,4,5,6,7,8,9,10,11,中找到第 n 個數字。注意 n 是正數且在32位整數範圍內 n 231 示例 1 輸入 3輸出 3示例 2 輸入 11輸出 0說明 第11個數字在序列 1,2,3,4,5,6,7,8,9,10,11,裡是0,它是10的一部分。1 9,...
leetcode 400 第N個數字(數學)
位數 個數 1 92 90x2 3 900x3 先定他是幾位數。如果他是3位數,減去一位數的個數總和,減去一位數的個數總和,代表的就是從100開始他是第幾個數了,除以3,則可以判斷他是在從100開始的第幾個數裡面,再利用取餘,就可以判斷出他是這個數裡面的第幾個了。int main 定位數。int c...