Số có chữ số liên tiếp nếu mỗi chữ số lớn hơn chữ số trước đúng 1. Tìm tất cả số trong [low, high] thỏa mãn.
Ví dụ: low=100, high=300 → [123,234].
Thuật toán (Sinh tất cả số hợp lệ)
- Duyệt độ dài
lentừ 1 đến 9. - Duyệt chữ số bắt đầu
starttừ 1 đến10-len. - Tạo số:
x = 0; for k=0..len-1: x = x*10 + (start+k). - Nếu trong khoảng → thêm vào kết quả.
Mã nguồn C++
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
vector sequentialDigits(int low, int high) {
vector ans;
for (int len=1; len<=9; len++) {
for (int start=1; start+len-1<=9; start++) {
int x=0;
for (int k=0; k
Đầu vào / Đầu ra
Input: 500 5000
Output: [567, 678, 789, 1234, 2345, 3456, 4567]