LeetCode 967. 连续差相同的数字(BFS/DFS)

1. 题目

返回所有长度为 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]
 
提示:
1 <= N <= 9
0 <= K <= 9

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/numbers-with-same-consecutive-differences
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 简单的模板题,一起加油!

2.1 DFS

class Solution {
	vector<int> ans;
public:
    vector<int> numsSameConsecDiff(int N, int K) {
    	if(N == 1)
    		return {0,1,2,3,4,5,6,7,8,9};
    	for(int i = 1; i <= 9; ++i)
    		dfs(1,N,K,i);
    	return ans;
    }
    void dfs(int count, int N, int K, int num)
    {
    	if(count == N)//位数够了
    	{
    		ans.push_back(num);
    		return;
    	}
    	int last = num%10;
    	if(last+K <= 9)
    		dfs(count+1, N, K, num*10+last+K);
    	if(last-K >= 0 && K != 0) // K 为0,跟上面重复了
    		dfs(count+1, N, K, num*10+last-K);
    }
};

8 ms 8.2 MB

2.2 BFS

class Solution {
    vector<int> ans;
public:
    vector<int> numsSameConsecDiff(int N, int K) {
        if(N == 1)
            return {0,1,2,3,4,5,6,7,8,9};
        queue<int> q;
        for(int i = 1; i <= 9; ++i)
            q.push(i);
        int cur, lastbit, size, len = 1;
        while(!q.empty())
        {
            size = q.size();
            while(size--)
            {
                cur = q.front();
                q.pop();
                if(len == N)//位数够了
                    ans.push_back(cur);
                lastbit = cur%10;
                if(lastbit+K <= 9 && len < N)
                    q.push(cur*10+lastbit+K);
                if(lastbit-K >= 0 && len < N && K != 0) // K 为0,跟上面重复了
                    q.push(cur*10+lastbit-K);
            }
            ++len;//位数+1
        }
        return ans;
    }
};

4 ms 7.6 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

猜你喜欢

转载自blog.csdn.net/qq_21201267/article/details/108473159