Re: [閒聊] 每日leetcode

作者: DJYOSHITAKA (Evans)   2024-03-07 22:57:29
今天的寫過了
隨便撿路上一題來寫
289. Game of Life
敘述很長 大概就是看每個elements的neightbor的sum然後做事情
簡單來說就是個2d convolution
看解答一堆奇技淫巧
難怪我當不了designer
int arrsum(int xl, int xr, int yt, int yb, vector<vector<int>>& board)
{
int sum = 0;
for(int idx_x = xl; idx_x <= xr; idx_x++)
{
for(int idx_y = yt; idx_y <= yb; idx_y++)
{
sum += board[idx_y][idx_x];
}
}
return sum;
}
void gameOfLife(vector<vector<int>>& board) {
int m = board.size();
int n = board[0].size();
vector<vector<int>> ans = board;
for(int idx_x = 0; idx_x < n; idx_x++)
{
for(int idx_y = 0; idx_y < m; idx_y++)
{
int sum = arrsum(max(0, idx_x-1), min(n-1, idx_x+1), max(0,
idx_y-1), min(m-1, idx_y+1), board);
if(board[idx_y][idx_x] == 1)
{
if(sum-1 < 2 || sum-1 > 3)
{
ans[idx_y][idx_x] = 0;
}
}
else if(sum == 3)
{
ans[idx_y][idx_x] = 1;
}
}
}
board = ans;
}

Links booklink

Contact Us: admin [ a t ] ucptt.com