Re: [閒聊] 每日leetcode

看板Marginalman作者 (早瀬ユウカの体操服 )時間1月前 (2024/05/13 09:34), 編輯推噓2(200)
留言2則, 2人參與, 1月前最新討論串209/420 (看更多)
https://leetcode.com/problems/score-after-flipping-matrix/description/ 861. Score After Flipping Matrix 給你一個二維陣列,他可以被看成多個二進位數字,例如: 100 = 4 011 = 3 你可以對行或列進行翻轉把0和1交換,你可以翻轉無限次求出怎麼樣翻轉可以讓二進制 數的和最大。 思路: 1.觀察一下列什麼時候要翻轉,我們發現最左邊的數字如果是0翻轉一定會變大,1則一 定變小,所以遇到第一位為0就翻轉該列。 2.觀察行什麼時候要翻轉,我們可以發現如果0的數量比1多翻轉一定會變大,數有幾個0 如果大於1的數量就翻轉他。 3.把行列翻轉完的矩陣轉成十進制求和。 py code: ---------------------------------------- class Solution: def matrixScore(self, grid: List[List[int]]) -> int: m, n = len(grid), len(grid[0]) for i in range(m): if grid[i][0] == 0: # reverse for j in range(n): grid[i][j] = (grid[i][j] + 1) % 2 for i in range(n): zero = 0 for j in range(m): if grid[j][i] == 0: zero += 1 if zero > m // 2: # reverse for j in range(m): grid[j][i] = (grid[j][i] + 1) % 2 # to binary res = 0 for i in range(m): num = 0 for j in range(n): num = num*2 + grid[i][j] res += num return res ---------------------------------------- for迴圈可以壓吧 懶得想== -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.139.102.20 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1715564075.A.B66.html

05/13 09:36, 1月前 , 1F
露 你好棒
05/13 09:36, 1F

05/13 09:52, 1月前 , 2F
大師
05/13 09:52, 2F
文章代碼(AID): #1cGMuhjc (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1cGMuhjc (Marginalman)