An integer has sequential digits if and only if each digit in the number is one more than the previous digit.
Return a sorted list of all the integers in the range [low, high] inclusive that have sequential digits.
정수는 숫자의 각 숫자가 이전 숫자보다 하나 더 큰 경우에만 연속 숫자를 갖습니다.
연속 숫자가 있는 [낮음, 높음] 범위(포함)의 모든 정수의 정렬된 목록을 반환합니다.
Example 1:
Input: low = 100, high = 300
Output: [123,234]
Example 2:
Input: low = 1000, high = 13000
Output: [1234,2345,3456,4567,5678,6789,12345]
Constraints:
- 10 <= low <= high <= 10^9
코드 1
class Solution {
fun sequentialDigits(low: Int, high: Int): List<Int> {
val answer = mutableListOf<Int>()
for (i in 1..9) {
var temp = i
for (j in i + 1..9) {
temp = temp * 10 + j
if (temp in low..high) {
answer.add(temp)
} else if (temp > high) {
break
}
}
}
return answer.sorted()
}
}
코드 2
- Deque 를 이용해서 10 으로 나눈 나머지가 9(마지막 숫자) 보다 작을 경우, 다음 연속 숫자를 Queue 에 추가한다.
class Solution {
fun sequentialDigits(low: Int, high: Int): List<Int> {
val answer = mutableListOf<Int>()
val queue = ArrayDeque((1..9).toList())
while (queue.isNotEmpty()) {
val n = queue.removeFirst()
if (n > high) {
continue
}
if (n in low..high) {
answer.add(n)
}
val ones = n % 10
if (ones < 9) {
queue.add(n * 10 + (ones + 1))
}
}
return answer
}
}
'LeetCode > Array & Hashing' 카테고리의 다른 글
[LeetCode][Kotlin] 68. Text Justification (0) | 2024.09.23 |
---|---|
[LeetCode][Kotlin] 2870. Minimum Number of Operations to Make Array Empty (0) | 2024.09.05 |
[LeetCode][Kotlin] 179. Largest Number (0) | 2024.08.30 |