Based on your thinking process, I write the code and it accepts, beats 86.13%.

class Solution(object):
def findNthDigit(self, n):
"""
:type n: int
:rtype: int
"""
if n < 10:
return n
buff = [0,9,180,2700,36000,450000,5400000,63000000,720000000,8100000000]
temp = n
pos = 0
for i in xrange(0,len(buff)):
temp -= buff[i]
if temp < 0:
pos = i
temp += buff[i]
break
div = temp/pos
remainder = temp%pos
result = pow(10,pos-1) + (div-1)
if remainder == 0 :
return int(str(result)[-1])
else:
return int(str(result+1)[remainder-1])