返回所有长度为 N 且满足其每两个连续位上的数字之间的差的绝对值为 K 的非负整数。
请注意,除了数字 0 本身之外,答案中的每个数字都不能有前导零。例如,01 因为有一个前导零,所以是无效的;但 0 是有效的。
你可以按任何顺序返回答案。
示例 1:
输入:N = 3, K = 7 输出:[181,292,707,818,929] 解释:注意,070 不是一个有效的数字,因为它有前导零。
示例 2:
输入:N = 2, K = 1 输出:[10,12,21,23,32,34,43,45,54,56,65,67,76,78,87,89,98]
class Solution {
public:
vector<int> numsSameConsecDiff(int N, int K) {
queue<int> temp;
for(int i=1;i<=9;i++)temp.push(i);
for(int x;temp.front()<pow(10,N-1);temp.pop()){
x=temp.front()%10+K;
if(0<=x&&x<=9)temp.push(temp.front()*10+x);
if(K==0)continue;
x=temp.front()%10-K;
if(0<=x&&x<=9)temp.push(temp.front()*10+x);
}
vector<int> res;
if(N==1)res.push_back(0);
for(;!temp.empty();temp.pop())res.push_back(temp.front());
return res;
}
};