点击上方“专知”,关注获取专业AI知识”
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.
题目的意思是给定一串无穷大的正整数,让我们找出第n个数字是多少。
思路:我们可以把这些数字写出来找下规律,每个数由一个数字构成的数有9个,每个数由2个数字构成的数有90个,每个数由3个数字构成的数有900个,每个数由n个数字构成的数有9*10n-1个。我们首先要找出第n个数字落在几位数上,然后找到具体落在哪个数上,然后找到落到这个数的第几位上,最后锁定是哪一个数字。每一步都需要细心耐心。
class Solution {
public:
int findNthDigit(int m) {
int digit=1,flag;
long c=1, target=0, n=m;
//求出数字n落在digit位数上
while(n>0)
{
n-=c*digit*9;
digit++;
c*=10;
}
//求出数字n是digit位数的第几个数字
n+=(--digit)*(c/10)*9;
//求出数字n是落在哪一个数上
target=(n-1)/digit+c/10; //
//求出数字n是落在target左数第flag个数字上
flag=(n-1)%digit+1;
//求出target的右数第digit-flag+1数字
return target/(int)pow(10,digit-flag)%10;
}
};
人生易老,唯有陪伴最长情,加油!
专知网站查看Leetcode刷题日记:
请登录www.zhuanzhi.ai或者点击阅读原文,顶端搜索“Leetcode” 主题,取查看获得专知Leetcode所有资源!如下图所示~
请感兴趣的同学,扫一扫下面群二维码,加入到专知-LeetCode学习交流群!(注明 Leetcode 刷题)
欢迎转发到你的微信群和朋友圈,分享专业AI知识!
获取更多关于机器学习以及人工智能知识资料,请访问www.zhuanzhi.ai, 或者点击阅读原文,即可得到!
-END-
欢迎使用专知
专知,一个新的认知方式!专注在人工智能领域为AI从业者提供专业可信的知识分发服务, 包括主题定制、主题链路、搜索发现等服务,帮你又好又快找到所需知识。
使用方法>>访问www.zhuanzhi.ai, 或点击文章下方“阅读原文”即可访问专知
中国科学院自动化研究所专知团队
@2017 专知
专 · 知
关注我们的公众号,获取最新关于专知以及人工智能的资讯、技术、算法、深度干货等内容。扫一扫下方关注我们的微信公众号。
点击“阅读原文”,使用专知!