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);
}
}
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);
}
}