leetcode 400. Nth Digit
题意:
将1,2,3,4...无限序列,组成一个视作一个连续序列,取第n位。
通俗点,就是123456789101112...,比如第11位就是0,由于第11位在10里面。
思路:
换算为实际数字及位数,就是麻烦点。
int findNthDigit(int n) { if (n < 10) return n; int arr[9] = {0}; for (int i = 1; i < 9; i++) { int num = (pow(10, i - 1) * 9 * i); arr[i] = arr[i - 1] + num; } int j = 8; for (; j >= 1; j--) { int ans = n / arr[j]; if (ans != 0) { break; } } int x = pow(10, j) + (n - arr[j] - 1) / (j + 1); int bit = (n - arr[j] - 1) % (j + 1); return to_string(x)[bit] - '0'; }
【本文章出自博客园willaty,转载请注明作者出处,误差欢迎指出~】