1. 程式人生 > >算法27-----第N個數字

算法27-----第N個數字

說明 lse for else 範圍 整形 數字 部分 題目

1、題目:

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

2、思路:

位數相加,N - 位數。

3、代碼

    def findNthDigit(self, n):
        """
        :type n: int
        :rtype: int
        
""" num = len(str(n)) a,b,c = 0,0,0 for i in range(1,num+1): b = a a += i*(10**i-10**(i-1)) if a>=n: c = i break temp=0 if num!=1: temp = 10**(c-1)-1 # b = a - num *temp k = (n-b)//c l
= (n-b) % c if l == 0: return int(str(k + temp)[-1]) else: return int(str(k + temp+1)[l-1])

算法27-----第N個數字