最佳利益 調整後的分數的最大值 (二進位操作) Leetcode #861

更新於 2024/05/13閱讀時間約 3 分鐘

題目敘述

輸入給定一個二元的二維矩陣grid

每次可以翻轉一條row,讓每個元素的01反相

也可以翻轉一條column,讓每個元素的01反相

可以操作任意多次

最後把每條row視為一條二進位表達式的數字,並且進行加總,得到最後的分數

請問分數的最大值是多少


原本的英文題目敘述


測試範例

Example 1:

Input: grid = [[0,0,1,1],[1,0,1,0],[1,1,0,0]]
Output: 39
Explanation: 0b1111 + 0b1001 + 0b1111 = 15 + 9 + 15 = 39

Example 2:

Input: grid = [[0]]
Output: 1

約束條件

Constraints:

  • m == grid.length

m代表grid的高度

  • n == grid[i].length

n代表grid的寬度

  • 1 <= m, n <= 20

高度m和寬度n都介於 1 ~ 20之間。

  • grid[i][j] is either 0 or 1.

每個陣列元素都是0或1。


演算法 讓1盡可能多,並且居首位(MSB)

分數是row by row的二進位數字加總。

因此,為了分數最大化,推演出幾個想法。


一.

讓bit 1居首位(MSB)

因為1XXX ... X > 0XXX ... X

最高位是1永遠會比最高位是0的二進位數字還大,不論後面的分布情況為何


二.

MSB決定之後,接下來就是讓bit1 盡可能多,為了一致性

我們採取column wise的掃描方式,從第二高位掃描到最低位

每個column都採取讓1盡可能多的方式

如果保持原狀的bit1必較多,就保持原狀。

如果反轉的bit1比較多,就反轉。



程式碼 讓1盡可能多,並且居首位(MSB)

class Solution:
def matrixScore(self, grid: List[List[int]]) -> int:

h, w = len(grid), len(grid[0])

# Let MSB of each first column be 1
score = h

# Check from second column to last column
for column in range(1, w):

# Update score in binary representation
score <<= 1

# Option_1
keep = sum( grid[row][column] ^ grid[row][0] for row in range(h) )

# Option_2
flip = h - keep

# Add best score we can get on current column
score += max(keep, flip)

return score

複雜度分析

時間複雜度: O(h*w)

需要一個2D掃描,掃描每個元素恰好一次。


空間複雜度: O(1)

主要計算都是in-place計算,並且所用到的都是固定尺寸O(1)的臨時變數。


Reference:

[1] Score After Flipping Matrix - LeetCode

avatar-img
90會員
425內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
給定一個方陣grid,請計算每個3x3窗口內的最大值,並且也以方陣的形式輸出答案。 原本的英文題目敘述 測試範例 Example 1: Input: grid = [[9,9,8,1],[5,6,2,6],[8,2,6,4],[6,2,2,2]] Output: [[9,9]
輸入給定一個已經從小到大排序好,而且彼此互質的整數陣列, 請問任取兩數分別當作分子、分母,第k小的分數是多少? 輸出請以 [分子,分母] 的形式回傳答案。
題目敘述 輸入給定一個整數陣列,分別代表每小朋友的快樂值。 要求我們選擇其中最快樂的k位小朋友,累加這群小朋友的快樂值。 有一個特殊的規則,第一位選中的小朋友快樂值不變。 接著,第二位選中的小朋友快樂值-1 再接著,第三位選中的小朋友快樂值-2 快樂值扣到只剩下0就不再往下扣 .
題目敘述 輸入給定一個整數陣列,分別代表每位運動員在比賽中的成績。 分數最高的給予金牌"Gold Medal" 分數次高的給予金牌"Silver Medal" 分數第三高的給予金牌"Bronze Medal" 剩餘的名次依照順序給予"4", "5", ..., "n" 的編號。 輸出時以字串
題目敘述 輸入給定一個鏈結串列,整體看代表一個十進位的數字,各別看每個節點代表每個digit,分別從最高位~最低位個位數。 要求我們把原本的數字乘以二,並且以鏈結串列的形式返回答案。 原本的英文題目敘述
題目敘述 題目給定一個鏈結串列中的節點Node,要求我們從鏈結串列中刪除該節點。 題目保證該節點不是tail node。 題目要求我們in-place原位操作。 原本的英文題目敘述 測試範例 Example 1: Input: head = [4,5,1,9], node = 5
給定一個方陣grid,請計算每個3x3窗口內的最大值,並且也以方陣的形式輸出答案。 原本的英文題目敘述 測試範例 Example 1: Input: grid = [[9,9,8,1],[5,6,2,6],[8,2,6,4],[6,2,2,2]] Output: [[9,9]
輸入給定一個已經從小到大排序好,而且彼此互質的整數陣列, 請問任取兩數分別當作分子、分母,第k小的分數是多少? 輸出請以 [分子,分母] 的形式回傳答案。
題目敘述 輸入給定一個整數陣列,分別代表每小朋友的快樂值。 要求我們選擇其中最快樂的k位小朋友,累加這群小朋友的快樂值。 有一個特殊的規則,第一位選中的小朋友快樂值不變。 接著,第二位選中的小朋友快樂值-1 再接著,第三位選中的小朋友快樂值-2 快樂值扣到只剩下0就不再往下扣 .
題目敘述 輸入給定一個整數陣列,分別代表每位運動員在比賽中的成績。 分數最高的給予金牌"Gold Medal" 分數次高的給予金牌"Silver Medal" 分數第三高的給予金牌"Bronze Medal" 剩餘的名次依照順序給予"4", "5", ..., "n" 的編號。 輸出時以字串
題目敘述 輸入給定一個鏈結串列,整體看代表一個十進位的數字,各別看每個節點代表每個digit,分別從最高位~最低位個位數。 要求我們把原本的數字乘以二,並且以鏈結串列的形式返回答案。 原本的英文題目敘述
題目敘述 題目給定一個鏈結串列中的節點Node,要求我們從鏈結串列中刪除該節點。 題目保證該節點不是tail node。 題目要求我們in-place原位操作。 原本的英文題目敘述 測試範例 Example 1: Input: head = [4,5,1,9], node = 5
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
秀出你的台劇清單! 高品質的戲劇他會包含很多的元素,想要傳達給觀眾不一樣的思考面向,小編發現很多台劇都會討論到「媒體素養」,究竟追劇可以學習到哪些的媒體素養觀呢?看完後你又有哪些省思呢? 今天,就來看看台劇呈現的媒體議題吧!
Thumbnail
「在刑事上往往能看到壞人的善良  在民事上常常能看到好人的邪惡」
因為天心的關係開始有發現這部律政主題的連續劇,不過前兩集看了之後並沒有讓我繼續追完的衝動,因為描述一個新的實習律師如何進入大的律師事務所那個橋段太過戲劇~再重新開啟是因為一位客戶推薦,他說的角度是從親子角度切入,讓我好奇後面劇情有這麼『感動人心』喔?所以花了兩個多禮拜追到第三季的前面~直到男主過馬路
Thumbnail
【長壽三尊之功德利益】 長壽佛、尊勝佛母與白度母,尊稱為藏傳佛教之長壽三本尊,其主佛為長壽佛,左為白度母右為尊勝佛母,象徵福壽吉祥,四方則為息、增、懷、誅四事業空行母圍繞,以勾召五大精華、壽命、福氣、智慧…等,避免非時死、夭折或意外身亡,消除一切罪業,證無死成就。
Thumbnail
如果要說結論的話,《最佳利益》這部片節奏快,會讓人想一集接一集地看。也會推薦給朋友看,喜歡方箏很聰明對待事情表現地很通透,看他解釋案件很舒服。
有一股氣不知從何去發。 回家時,隨著熱愛追劇的父母看了台劇最佳利益2。完全搞不清楚狀況的我看了其中一集感到非常不舒服,就是老師性侵班上學生的冤案。這裡有雷。(氣到不想先告知XD) 明明是原告少女的自述,但在這集一開頭卻模擬了少女被性侵的過程,鏡頭全程都以老師為視角,少女表演了所有刻板印象的可憐又揪心
Thumbnail
看完一連串國片之後,最近的空閒時間,則是沈迷於台劇「最佳利益」,與朋友閒聊時得知,她們都在追吳慷仁主演的「模仿犯」,但我最不喜歡追夯劇,因為太熱門了,所以網路上鋪天蓋地的爆光和討論,常常才開始看第一集,就被劇透光了。 我喜歡在Netflix影片海中,自行撈出我眼中的珍珠,不過這部法庭片也算是討論度高
Thumbnail
「你再有天份,還是需要練習的。」 這篇本來是在上一次疫情稍微趨緩之後第一次復拍《最佳利益2》時要寫的,但拖著拖著就不如留到殺青之後寫,也是一種氛圍加收尾。 從5月份開始一路停工,所有的表演工作都取消了,連帶本來要去當表演老師的工作也全部停擺,因為很多新戲不想承擔可能有的風險,直接取消。上一次的拍攝是
Thumbnail
是很難得的一部律師職人劇呢! 台劇今年真的越來越棒了 有修法律的課看第一集面試時適用法條好有感XD 劇中案件很多都是真實案件的隱射 還有整部劇都維持著一貫的風格 爭取當事人的最佳利益 卻隱含了很多現實面在裡面 可能不如想像中正義 卻實在 例如蕭美娟為了離婚故意激怒他老公打她 或許過程看似詐騙 但她也
Thumbnail
人都喜歡聽故事,光聽故事不夠,多數人還喜歡看戲,青少年不是追偶像團體就是追劇,既然如此,就找個CP值高的劇來共賞共討論。 《最佳利益》是繼《我們與惡的距離》之後的佳劇,對於開始探索未來的青少年來說,也是極好的職人劇,律師在做什麼?職場是什麼?從一個一個故事中窺探人生,提前準備面對現實的未來
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
秀出你的台劇清單! 高品質的戲劇他會包含很多的元素,想要傳達給觀眾不一樣的思考面向,小編發現很多台劇都會討論到「媒體素養」,究竟追劇可以學習到哪些的媒體素養觀呢?看完後你又有哪些省思呢? 今天,就來看看台劇呈現的媒體議題吧!
Thumbnail
「在刑事上往往能看到壞人的善良  在民事上常常能看到好人的邪惡」
因為天心的關係開始有發現這部律政主題的連續劇,不過前兩集看了之後並沒有讓我繼續追完的衝動,因為描述一個新的實習律師如何進入大的律師事務所那個橋段太過戲劇~再重新開啟是因為一位客戶推薦,他說的角度是從親子角度切入,讓我好奇後面劇情有這麼『感動人心』喔?所以花了兩個多禮拜追到第三季的前面~直到男主過馬路
Thumbnail
【長壽三尊之功德利益】 長壽佛、尊勝佛母與白度母,尊稱為藏傳佛教之長壽三本尊,其主佛為長壽佛,左為白度母右為尊勝佛母,象徵福壽吉祥,四方則為息、增、懷、誅四事業空行母圍繞,以勾召五大精華、壽命、福氣、智慧…等,避免非時死、夭折或意外身亡,消除一切罪業,證無死成就。
Thumbnail
如果要說結論的話,《最佳利益》這部片節奏快,會讓人想一集接一集地看。也會推薦給朋友看,喜歡方箏很聰明對待事情表現地很通透,看他解釋案件很舒服。
有一股氣不知從何去發。 回家時,隨著熱愛追劇的父母看了台劇最佳利益2。完全搞不清楚狀況的我看了其中一集感到非常不舒服,就是老師性侵班上學生的冤案。這裡有雷。(氣到不想先告知XD) 明明是原告少女的自述,但在這集一開頭卻模擬了少女被性侵的過程,鏡頭全程都以老師為視角,少女表演了所有刻板印象的可憐又揪心
Thumbnail
看完一連串國片之後,最近的空閒時間,則是沈迷於台劇「最佳利益」,與朋友閒聊時得知,她們都在追吳慷仁主演的「模仿犯」,但我最不喜歡追夯劇,因為太熱門了,所以網路上鋪天蓋地的爆光和討論,常常才開始看第一集,就被劇透光了。 我喜歡在Netflix影片海中,自行撈出我眼中的珍珠,不過這部法庭片也算是討論度高
Thumbnail
「你再有天份,還是需要練習的。」 這篇本來是在上一次疫情稍微趨緩之後第一次復拍《最佳利益2》時要寫的,但拖著拖著就不如留到殺青之後寫,也是一種氛圍加收尾。 從5月份開始一路停工,所有的表演工作都取消了,連帶本來要去當表演老師的工作也全部停擺,因為很多新戲不想承擔可能有的風險,直接取消。上一次的拍攝是
Thumbnail
是很難得的一部律師職人劇呢! 台劇今年真的越來越棒了 有修法律的課看第一集面試時適用法條好有感XD 劇中案件很多都是真實案件的隱射 還有整部劇都維持著一貫的風格 爭取當事人的最佳利益 卻隱含了很多現實面在裡面 可能不如想像中正義 卻實在 例如蕭美娟為了離婚故意激怒他老公打她 或許過程看似詐騙 但她也
Thumbnail
人都喜歡聽故事,光聽故事不夠,多數人還喜歡看戲,青少年不是追偶像團體就是追劇,既然如此,就找個CP值高的劇來共賞共討論。 《最佳利益》是繼《我們與惡的距離》之後的佳劇,對於開始探索未來的青少年來說,也是極好的職人劇,律師在做什麼?職場是什麼?從一個一個故事中窺探人生,提前準備面對現實的未來