Re: [閒聊] 每日leetcode已回收

看板Marginalman作者 (神楽めあ的錢包)時間1年前 (2024/04/13 14:19), 編輯推噓2(201)
留言3則, 3人參與, 1年前最新討論串115/1548 (看更多)
心焦U 哥哥 心焦U,怎麼連續兩天都是hard 85. Maximal Rectangle 有一個n*m的matrix由'1'、'0'組成 找出面積最大的長方形 該長方形的元素只能是'1' 思路: 主要的思路跟84. Largest Rectangle in Histogramt這題一樣 84題只有1個矩陣 這題要做m次 把matrix[i][j]的值改成第i列,到第j個元素連續1的次數 例如:[1,1,1,0,1,1]=>[1,2,3,0,1,2] 就著就是對每一行去做第84題的解法 答案就出來了 golang code func maximalRectangle(matrix [][]byte) int { r := len(matrix) c := len(matrix[0]) for i := 0; i < r; i++ { temp := byte(0) for j := 0; j < c; j++ { if matrix[i][j] == '0' { temp = 0 } else { temp += matrix[i][j]-'0' } matrix[i][j] = temp } } matrix = append(matrix, make([]byte, c)) ans := 0 for j := 0; j < c; j++ { stack := make([]int, 1) stack[0] = -1 for i := 0; i <= r; i++ { for len(stack) > 1 && matrix[i][j] < matrix[stack[len(stack)-1]][j] { idx := stack[len(stack)-1] stack = stack[:len(stack)-1] width := i - stack[len(stack)-1] - 1 area := width * int(matrix[idx][j]) ans = max(ans, area) } stack = append(stack, i) } } return ans } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.138.196.238 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1712989172.A.DDA.html

04/13 14:20, 1年前 , 1F
看到hard我就關了
04/13 14:20, 1F

04/13 14:21, 1年前 , 2F
心焦U 這題應該還能用dp
04/13 14:21, 2F

04/13 17:08, 1年前 , 3F
連續三天單調棧
04/13 17:08, 3F
文章代碼(AID): #1c6YFqtQ (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1c6YFqtQ (Marginalman)