您的位置:首页 > 其它

Leetcode 400. Nth Digit[easy]

2016-10-14 16:09 399 查看
题目:

Find the nth digit of the infinite integer sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …

Note:

n is positive and will fit within the range of a 32-bit signed integer (n < 231).

Example 1:

Input:

3

Output:

3

Example 2:

Input:

11

Output:

0

Explanation:

The 11th digit of the sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, … is a 0, which is part of the number 10.

继续混题数。

wa了一次,没注意到位数*此位数数字的个数有可能爆int。



class Solution {
public:
int findNthDigit(int n) {
return find(1, n);
}

int find(int w, int n) {
int num = max(w) - min(w) + 1;
if ((long long)n > (long long)w * num) return find(w + 1, n - w * num);
else {
int q = (n - 1) / w;
int r = (n - 1) % w;
r++;
n = min(w) + q;
r = w - r;
while (r--) n /= 10;
return n % 10;
}
}

int max(int w) {
int rt = 0;
while (w--) rt = rt * 10 + 9;
return rt;
}

int min(int w) {
int rt = 1;
w--;
while (w--) rt *= 10;
return rt;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: