400. Nth Digit
선택한 UI 언어에 맞게 문제 텍스트를 러시아어에서 번역합니다. 코드는 변경하지 않습니다.
given 정수 n, вернуть n-ю цифру бесконечной последовательности чисел [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...].
예제:
Input: n = 3
Output: 3
C# 해법
매칭됨/원본public class Solution {
public int FindNthDigit(int n) {
long length = 1, count = 9, start = 1;
while (n > length * count) {
n -= (int)(length * count);
length++;
count *= 10;
start *= 10;
}
start += (n - 1) / length;
string s = start.ToString();
return s[(n - 1) % (int)length] - '0';
}
}
C++ 해법
자동 초안, 제출 전 검토#include <bits/stdc++.h>
using namespace std;
// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
public int FindNthDigit(int n) {
long length = 1, count = 9, start = 1;
while (n > length * count) {
n -= (int)(length * count);
length++;
count *= 10;
start *= 10;
}
start += (n - 1) / length;
string s = start.ToString();
return s[(n - 1) % (int)length] - '0';
}
}
Java 해법
매칭됨/원본class Solution {
public int findNthDigit(int n) {
int length = 1;
long count = 9;
int start = 1;
while (n > length * count) {
n -= length * count;
length++;
count *= 10;
start *= 10;
}
start += (n - 1) / length;
String s = Integer.toString(start);
return s.charAt((n - 1) % length) - '0';
}
}
JavaScript 해법
매칭됨/원본class Solution {
findNthDigit(n) {
let length = 1, count = 9, start = 1;
while (n > length * count) {
n -= length * count;
length++;
count *= 10;
start *= 10;
}
start += Math.floor((n - 1) / length);
const s = start.toString();
return parseInt(s[(n - 1) % length]);
}
}
Python 해법
매칭됨/원본class Solution:
def findNthDigit(self, n: int) -> int:
length = 1
count = 9
start = 1
while n > length * count:
n -= length * count
length += 1
count *= 10
start *= 10
start += (n - 1) // length
s = str(start)
return int(s[(n - 1) % length])
Go 해법
매칭됨/원본func findNthDigit(n int) int {
length, count, start := 1, 9, 1
for n > length * count {
n -= length * count
length++
count *= 10
start *= 10
}
start += (n - 1) / length
s := strconv.Itoa(start)
return int(s[(n - 1) % length] - '0')
}
Algorithm
정의 диапазона:
Начните с определения количества цифр в числах текущего диапазона (1-9, 10-99, 100-999 и т.д.).
Уменьшайте значение n, вычитая количество цифр в текущем диапазоне, пока не найдете диапазон, в который попадает n-я цифра.
Нахождение конкретного числа:
Когда определите диапазон, find точное number, содержащее n-ю цифру.
Определите индекс цифры в этом числе.
Возвращение n-й цифры:
Извлеките и return n-ю цифру из найденного числа.
😎
Vacancies for this task
활성 채용 with overlapping task tags are 표시됨.
아직 활성 채용이 없습니다.