使用 dfs 算法时出现运行时错误

I got runtime error while using dfs Algorithm

我在使用 dfs 解决问题时遇到运行时错误。

这里是错误:

AddressSanitizer:地址 0x7ffce7e6eff8 上的堆栈溢出(pc 0x000000359715 bp 0x7ffce7e6f040 sp 0x7ffce7e6f000 T0

这里是问题link:

(https://leetcode.com/problems/flood-fill/)

这是我的代码:

class Solution {
public:
    vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int newColor) {

        int color=image[sr][sc];
        dfs(image,sr,sc,color,newColor);
        return image;
    }

    void dfs(vector<vector<int>> &image,int sr,int sc,int color,int newcolor)
    {
         if(sr<0 || sr>=image.size() || sc<0 || sc>=image[0].size() || image[sr][sc]!=color)
        {
            return;
        }

            image[sr][sc]=newcolor;
            dfs(image,sr,sc+1,color,newcolor);
            dfs(image,sr,sc-1,color,newcolor);
            dfs(image,sr+1,sc,color,newcolor);
            dfs(image,sr-1,sc,color,newcolor);

    }


};

它在以下测试用例上失败了:

[[0,0,0],[0,1,1]] 1个 1个 1

我想不通哪里出错了。

谢谢。

检查 newColor != color,否则你会无限递归,因为你依赖颜色变化来避免重新访问以前访问过的像素。

这正是您失败的测试用例所发生的情况。