首页 > 代码库 > leetcode 400 Add to List 400. Nth Digit
leetcode 400 Add to List 400. Nth Digit
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:3Output:3
Example 2:
Input:11Output:0Explanation: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.
这道题目我之前见过。。。。一开始用下边注释的代码写,也通过了不过有点费时。后来改成取模。
class Solution {public: int findNthDigit(int n) { // 2: 90 3:900 4: 9000 5:90000 6: 900000 7:9000000 8:90000000 9:900000000 10:9000000000 long x = 1; long t = 9; if (n < 10) return n; while (n > x * t) { n -= x * t; x++; t *= 10; } long sum = 0; int m = n % x; if (m == 0) return ((long)pow(10.0,x-1) + n/x - 1)%10; else { long q = (pow(10.0, x-1) + (n/x) ); for (int j = 0; j < x - m; ++j) q/=10; return q%10; } /* for (int i = 0; i < t; ++i) { sum += x; if (sum == n) { return (i % 10); } else if (sum > n) { long y = sum - n; long z = pow(10.0,(x - 1)) + i; cout <<z; for (int j = 0; j < y; ++j) { z /= 10; } return z%10; } } */ }};
leetcode 400 Add to List 400. Nth Digit
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。