[LeetCode 간단한 문제] 87. - N번 숫자.

1348 단어 LeetCode간단히Easy

설명:


오늘은 87번째 문제다.무한한 정수 서열 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,...에서 n번째 숫자를 찾습니다.아래의 모든 코드는 건물주 검증을 거쳐LetCode에서 성공적으로 실행될 수 있고 코드도 다른 사람을 참고할 수 있다. 문장 마지막에 참고한 블로그 링크를 첨부할 것이다. 만약에 블로거의 관련 권익을 침해하면 저에게 연락하여 삭제해 주십시오.
(수동 비심)

본문


제목: 무한한 정수 서열 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11...에서 n번째 숫자를 찾습니다.
주의: n은 정수이며 정형 범위 내에 있습니다 (n < 2^31).
예1:
  :
3

  :
3

예2:
  :
11

  :
0

  :
 11       1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...   0,  10    。

해법통계를 통해 한 자릿수는 9개, 두 자릿수는 90개, 세 자릿수는 900개라는 것을 알 수 있다. 그러므로 먼저 하나의 순환으로 n이 있는 구간을 찾아내고 어느 숫자인지 해석한다. 코드는 다음과 같다.
실행시: 24ms, Nth Digit의 Python 제출에서 98.20%의 사용자를 처치
class Solution(object):
    def findNthDigit(self, n):
        """
        :type n: int
        :rtype: int
        """
        digits = 1
        base = 9
        ith = 1
        while n > base*digits:
            n -= base*digits
            digits += 1
            ith += base
            base *= 10
        # ith+(n-1)/digits     ,[(n-1)%digits]           
        return int(str(ith + (n-1)/digits)[(n-1)%digits])

엔딩


해법 1:https://blog.csdn.net/liuxiao214/article/details/77949837

좋은 웹페이지 즐겨찾기