在無限的整數序列 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,9個數,是91位數;10 ~ 99,90個數,是902位數;100 ~ 999,900個數,是900*3位數·······
對於第n位數,我們令這個數字對應的數是target,分三步
確定找到的數是幾位數,
確定對應的數target是什麼
確定返回值是target中的哪個數字
詳細過程見**
int
findnthdigit
(int n)
int idx = n % digit;
if(idx ==
0) idx = digit;
int num = base/
9+ n/digit;
//確定target
if(idx == digit) num--
; idx = digit-idx+1;
while
(--idx)
return num%10;
}
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個數字(數學)
位數 個數 1 92 90x2 3 900x3 先定他是幾位數。如果他是3位數,減去一位數的個數總和,減去一位數的個數總和,代表的就是從100開始他是第幾個數了,除以3,則可以判斷他是在從100開始的第幾個數裡面,再利用取餘,就可以判斷出他是這個數裡面的第幾個了。int main 定位數。int c...
LeetCode 400 第N位數字
給你乙個整數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 的一部分。思路 假設數字位數為...