runtime error: addition of unsigned offset overflowed

runtime error: addition of unsigned offset overflowed

class Solution {
public:
    bool isSafe(vector<vector<int>> &image, int sr, int sc, int initial_value){
        if(sr>=0 && sr<image.size() && sc>=0 && sc<image[0].size() && image[sr][sc]==initial_value)
        {
            return true;
            
        }
    return false;
        
    
}
vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int newColor) {
    int initial_value=image[sr][sc];
    image[sr][sc]=newColor;
    
    if(isSafe(image, sr+1, sc,  initial_value))
    {
        // image[sr+1][sc]=newColor;
        image=floodFill( image,  sr+1,  sc,  newColor);
    }
    if(isSafe(image, sr-1, sc,  initial_value))
    {
        // image[sr+1][sc]=newColor;
        image=floodFill( image,  sr-1,  sc,  newColor);
    }
    if(isSafe(image, sr, sc+1,  initial_value))
    {
        // image[sr+1][sc]=newColor;
        image=floodFill( image,  sr,  sc+1,  newColor);
    }
    if(isSafe(image, sr, sc-1,  initial_value))
    {
        // image[sr+1][sc]=newColor;
        image=floodFill( image,  sr-1,  sc,  newColor);
    }
    return image;
}

};

vector<vector<int>> floodFill(vector<vector<int>>& image, ...

由于您是通过引用传递图像,因此无需 return 按值传递图像。

使用

您将大大提高性能
void floodFill(vector<vector<int>>& image, int sr, int sc, int newColor) {
    int initial_value=image[sr][sc];
    image[sr][sc]=newColor;
    
    if(isSafe(image, sr+1, sc,  initial_value))
    {
        floodFill( image,  sr+1,  sc,  newColor);
    }
    if(isSafe(image, sr-1, sc,  initial_value))
    {
        floodFill( image,  sr-1,  sc,  newColor);
    }
    if(isSafe(image, sr, sc+1,  initial_value))
    {
        floodFill( image,  sr,  sc+1,  newColor);
    }
    if(isSafe(image, sr, sc-1,  initial_value))
    {
        floodFill( image,  sr-1,  sc,  newColor);
    }
}