劍指 Offer 44. 數字序列中某一位的數字
數字以0123456789101112131415…的格式序列化到一個字元序列中。在這個序列中,第5位(從下標0開始計數)是5,第13位是1,第19位是4,等等。
請寫一個函式,求任意第n位對應的數字。
示例 1:
輸入:n = 3
輸出:3
示例 2:
輸入:n = 11
輸出:0
限制:
0 <= n < 2^31
基本思路:分別找到1位,2位,3位數……的個數規律,10,90,900,9000
int findNthDigit(int n) {
if(n<10)
return n;
long base=1,count=9;
int k=1;
while(n>count){
n-=count;
k++;
base=base*10;
count=k*base*9;
}
return to_string(base+(n-1)/k)[(n-1)%k]-'0'; //n-1,是因為是從base開始的
}
相關文章
- JZ-070-數字序列中的某一位數字
- 劍指Offer--陣列中重複的數字陣列
- 劍指offer:旋轉陣列的最小數字陣列
- 劍指offer 旋轉陣列的最小數字陣列
- 劍指 Offer 56 - I. 陣列中數字出現的次數陣列
- Leetcode 劍指 Offer 03. 陣列中重複的數字LeetCode陣列
- 劍指offer-轉陣列的最小數字-php陣列PHP
- 【劍指offer】二進位制中1的個數
- 【劍指 Offer】11. 旋轉陣列的最小數字陣列
- 劍指 Offer 11. 旋轉陣列的最小數字陣列
- 【劍指offer】7.旋轉陣列的最小數字陣列
- 劍指offer刷題之路--1.陣列中重複的數字陣列
- 劍指OFFER-數字在升序陣列中出現的次數(Java)陣列Java
- 劍指Offer-39-數字在排序陣列中出現的次數排序陣列
- [劍之offer] 03 陣列中重複的數字陣列
- 劍指 Offer 15. 二進位制中1的個數
- 劍指offer之列印超過陣列一半的數字陣列
- (python版)《劍指Offer》JZ06:旋轉陣列的最小數字Python陣列
- [劍指offer題解][Java]陣列中出現次數超過一半的數字Java陣列
- Leetcode 劍指 Offer 39. 陣列中出現次數超過一半的數字LeetCode陣列
- 劍指Offer 表示數值的字串字串
- 【劍指offer中等部分4】二進位制中1的個數(java)Java
- 每日一題 - 劍指 Offer 53 - I. 在排序陣列中查詢數字 I每日一題排序陣列
- 數字序列
- 力扣 - 劍指 Offer 39. 陣列中出現次數超過一半的數字力扣陣列
- 劍指 Offer 57 - II. 和為s的連續正數序列
- 【劍指 Offer 】17. 列印從1到最大的n位數
- 劍指offer | 17. 列印從1到最大的n位數
- 劍指 Offer 列印從1到最大n位數c++C++
- 【leetcode】劍指 Offer 16. 數值的整數次方LeetCode
- LeetCode|劍指 Offer 49.醜數LeetCode
- 劍指offer第49題 醜數
- 劍指Offer-把陣列中的數排成一個最小的數陣列
- 【LeetCode刷題(簡單程度)】劍指 Offer 57. 和為s的兩個數字LeetCode
- 劍指 Offer 53 - II. 0~n-1中缺失的數字(二分法)1
- 【劍指Offer】調整陣列順序使奇數位於偶數前面陣列
- 劍指Offer系列之「表示數值的字串」字串
- 劍指Offer-31-最小的K個數