400 第N個數字(簡單題)

2021-09-25 22:02:26 字數 1045 閱讀 6862

題目描述:

在無限的整數序列 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的一部分。

題目解釋及思路:

輸入11,之所以輸出的是0,是因為是按照字元來的,1234567891011,第11位是「10」的0。

根據觀察:

1-9,有9個數

10-99,有902個數

100-999,有9003個數

設n是i位數,那對應的區間有9*pow(10,i-1)*i 個數。

那我們在確定這個輸入的數字所處位置的字元是哪個時,我們可以先判斷這個數字在哪個區間。

找到所在區間後,判斷是第幾個數,在判斷是第幾個數的第幾位。

解題方法:

class

solution

//找到區間後,用a來記錄是第幾個數字

int a=

(n-1

)/i+

(int

)math.

pow(

10,i-1)

;//之所以除以i,是因為i位數的區間,乙個數占了i個位置

stringbuilder sb =

newstringbuilder()

; sb.

(a);

//把a新增到字串中

sb.tostring()

;return sb.

charat

((n-1)

%i)-

'0';

//確定出n是第幾位,再減去0的ascii碼值即可

}}

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...