Re: [閒聊] 每日leetcode

看板Marginalman作者 (6B)時間1年前 (2024/08/09 08:30), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串673/1549 (看更多)
840. magic squares in grid 今天起的很早== 3*3覺得不寫迴圈好像也沒差 又是一坨 反正只check中間是5 應該有快一點 剩下性質懶得想 但不管中間是不是5應該也會過 吧? class Solution { public: int numMagicSquaresInside(vector<vector<int>>& grid) { int n = grid.size(), m = grid[0].size(); vector<int> num(10, 0); num[0] = 1; if(n < 3 or m < 3) return 0; int sum = 15; int res = 0; for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++){ if(grid[i][j] == 5){ res += check(num, grid, i, j); } } } return res; } int check(vector<int> num, vector<vector<int>>& grid, int& i, int& j){ int n = grid.size(), m = grid[0].size(); if(i == 0 or i == (n-1) or j == 0 or j == (m-1) ){ return 0; } for(int x = i-1; x < i+2; x++){ for(int y = j-1; y < j+2; y++){ if(grid[x][y] < 10){ num[grid[x][y]] = 1; } else return 0; } } for(auto x: num){ if(x != 1) return 0; } if ((grid[i-1][j] + grid[i+1][j]) != 10 or\ (grid[i][j-1] + grid[i][j+1]) != 10 or\ (grid[i-1][j-1] + grid[i+1][j+1]) != 10 or\ (grid[i-1][j+1] + grid[i+1][j-1]) != 10){ return 0; } if( (grid[i-1][j-1] + grid[i-1][j] + grid[i-1][j+1]) != 15 or\ (grid[i+1][j-1] + grid[i+1][j] + grid[i+1][j+1]) != 15 or\ (grid[i-1][j-1] + grid[i][j-1] + grid[i+1][j-1]) != 15 or\ (grid[i-1][j+1] + grid[i][j+1] + grid[i+1][j+1]) != 15 ){ return 0; } j++; return 1; } }; -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.205.121.194 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1723163459.A.CD3.html
文章代碼(AID): #1cjMD3pJ (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1cjMD3pJ (Marginalman)