leetCode--733.图像渲染
有一幅以二維整數數組表示的圖畫,每一個整數表示該圖畫的像素值大小,數值在 0 到 65535 之間。
給你一個坐標?(sr, sc)?表示圖像渲染開始的像素值(行 ,列)和一個新的顏色值?newColor,讓你重新上色這幅圖像。
為了完成上色工作,從初始坐標開始,記錄初始坐標的上下左右四個方向上像素值與初始坐標相同的相連像素點,接著再記錄這四個方向上符合條件的像素點與他們對應四個方向上像素值與初始坐標相同的相連像素點,……,重復該過程。將所有有記錄的像素點的顏色值改為新的顏色值。
最后返回經過上色渲染后的圖像。
示例 1:
輸入: image = [[1,1,1],[1,1,0],[1,0,1]] sr = 1, sc = 1, newColor = 2 輸出: [[2,2,2],[2,2,0],[2,0,1]] 解析: 在圖像的正中間,(坐標(sr,sc)=(1,1)), 在路徑上所有符合條件的像素點的顏色都被更改成2。 注意,右下角的像素沒有更改為2, 因為它不是在上下左右四個方向上與初始點相連的像素點。注意:
- image?和?image[0]?的長度在范圍?[1, 50]?內。
- 給出的初始點將滿足?0 <= sr < image.length?和?0 <= sc < image[0].length。
- image[i][j]?和?newColor?表示的顏色值在范圍?[0, 65535]內。
?
跑出來結果是對的,但通不過,錯誤提示是:
=================================================================
==30==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x604000000180 at pc 0x000000407225 bp 0x7ffeba970cd0 sp 0x7ffeba970cc8
READ of size 8 at 0x604000000180 thread T0
? ? #1 0x7f1b804552e0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202e0)
0x604000000180 is located 0 bytes to the right of 48-byte region [0x604000000150,0x604000000180)
allocated by thread T0 here:
? ? #0 0x7f1b81e7ace0 in operator new(unsigned long) (/usr/local/lib64/libasan.so.5+0xe9ce0)
? ? #5 0x7f1b804552e0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202e0)
Shadow bytes around the buggy address:
? 0x0c087fff7fe0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
? 0x0c087fff7ff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
? 0x0c087fff8000: fa fa fd fd fd fd fd fd fa fa fd fd fd fd fd fd
? 0x0c087fff8010: fa fa fd fd fd fd fd fd fa fa fd fd fd fd fd fd
? 0x0c087fff8020: fa fa fd fd fd fd fd fd fa fa 00 00 00 00 00 00
=>0x0c087fff8030:[fa]fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
? 0x0c087fff8040: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
? 0x0c087fff8050: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
? 0x0c087fff8060: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
? 0x0c087fff8070: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
? 0x0c087fff8080: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
? Addressable: ? ? ? ? ? 00
? Partially addressable: 01 02 03 04 05 06 07?
? Heap left redzone: ? ? ? fa
? Freed heap region: ? ? ? fd
? Stack left redzone: ? ? ?f1
? Stack mid redzone: ? ? ? f2
? Stack right redzone: ? ? f3
? Stack after return: ? ? ?f5
? Stack use after scope: ? f8
? Global redzone: ? ? ? ? ?f9
? Global init order: ? ? ? f6
? Poisoned by user: ? ? ? ?f7
? Container overflow: ? ? ?fc
? Array cookie: ? ? ? ? ? ?ac
? Intra object redzone: ? ?bb
? ASan internal: ? ? ? ? ? fe
? Left alloca redzone: ? ? ca
? Right alloca redzone: ? ?cb
==30==ABORTING
?
求大佬解答
class Solution { public:bool vis[55][55] = {false};vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int newColor) {int color = image[sr][sc];dfs(sr,sc,image, color, newColor);return image;}void dfs(int x, int y, vector<vector<int>>& image,int color,int newColor){if(x-1 < 0 || x-1 >= image.size() || y-1 < 0 || y-1 >= image[0].size() || vis[x-1][y-1] == true) return;if(image[x-1][y-1] == color && vis[x-1][y-1] == false){vis[x-1][y-1] == true;image[x-1][y-1] = newColor;dfs(x+1,y,image, color, newColor);dfs(x-1,y,image, color, newColor);dfs(x,y+1,image, color, newColor);dfs(x,y-1,image, color, newColor);}} };?
總結
以上是生活随笔為你收集整理的leetCode--733.图像渲染的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leetcode--872. 叶子相似的
- 下一篇: leetcode--113.路径总和 Ⅱ