A stepping number is an integer such that all of its adjacent digits have an absolute difference of exactly 1
.
- For example,
321
is a stepping number while421
is not.
Given two integers low
and high
, return a sorted list of all the stepping numbers in the inclusive range [low, high]
.
Example 1:
Input: low = 0, high = 21 Output: [0,1,2,3,4,5,6,7,8,9,10,12,21]
Example 2:
Input: low = 10, high = 15 Output: [10,12]
class Solution {
public:
vector<int> countSteppingNumbers(int low, int high) {
vector<int> res;
for(int i = 1;i <10;i ++){
dfs(res,i,i,high);
}
vector<int> ans;
if(low == 0)
ans.push_back(0);
for(auto i:res){
if(i >= low && i <= high)
ans.push_back(i);
}
sort(ans.begin(),ans.end());
return ans;
}
void dfs(vector<int>&v,long num,long lastnum,long high){
if(num > high)
return;
v.push_back(num);
if(lastnum!=9)
dfs(v,num*10+lastnum+1,lastnum+1,high);
if(lastnum!=0)
dfs(v,num*10+lastnum-1,lastnum-1,high);
}
};