LeetCode 翻轉矩陣後的得分(貪心策略)

2021-09-24 05:24:50 字數 1253 閱讀 8108

有乙個二維矩陣 a 其中每個元素的值為 0 或 1 。

移動是指選擇任一行或列,並轉換該行或列中的每乙個值:將所有 0 都更改為 1,將所有 1 都更改為 0。

在做出任意次數的移動後,將該矩陣的每一行都按照二進位制數來解釋,矩陣的得分就是這些數字的總和。

返回盡可能高的分數。

示例:

輸入:[[0,0,1,1],[1,0,1,0],[1,1,0,0]]

輸出:39

解釋:轉換為 [[1,1,1,1],[1,0,0,1],[1,1,1,1]]

0b1111 + 0b1001 + 0b1111 = 15 + 9 + 15 = 39

1 <= a.length <= 20

1 <= a[0].length <= 20

a[i][j] 是 0 或 1

思路分

析:\color思路分析:

思路分析

:這道題說白了就是讓我們計算矩陣所有元素的和,並且每個元素是有一定的權重。

並且可知每一行的第乙個元素的權重最大,且由於二進位制的特徵,最高位的1權值會超過低位所有權值的和,比如「11111」,最高位的』1』代表24 = 16,第四位"1111" = 2 3 + 2 2 + 2 1 + 20 = 15。

因此我們首先需要保證第一列(每一行的第乙個元素)都為1,

我們第一步判斷每一行的第乙個元素是否是1,如果不是1,則將這一行的所有元素進行翻轉;

第二步:盡量保證剩餘列中1的個數竟可能多。

class

solution}}

//第一列全為1,所以可以直接求第一列的權值和

sumres +

= rowsize *

pow(

2, colsize -1)

;//再使其他列中1的個數盡可能多

翻轉矩陣後的得分(LeetCode)

題目鏈結 有乙個二維矩陣 a 其中每個元素的值為 0 或 1 移動是指選擇任一行或列,並轉換該行或列中的每乙個值 將所有 0 都更改為 1,將所有 1 都更改為 0。在做出任意次數的移動後,將該矩陣的每一行都按照二進位制數來解釋,矩陣的得分就是這些數字的總和。返回盡可能高的分數。示例 輸入 0,0,...

Leetcode NO 861 翻轉矩陣後的得分

有乙個二維矩陣 a 其中每個元素的值為 0 或 1 移動是指選擇任一行或列,並轉換該行或列中的每乙個值 將所有 0 都更改為 1,將所有 1 都更改為 0。在做出任意次數的移動後,將該矩陣的每一行都按照二進位制數來解釋,矩陣的得分就是這些數字的總和。返回盡可能高的分數。示例 輸入 0 0,1 1 1...

翻轉矩陣後的得分

問題描述 有乙個二維矩陣 a 其中每個元素的值為 0 或 1 翻轉是指選擇任一行或列,並轉換該行或列中的每乙個值 將所有 0 都更改為 1,將所有 1 都更改為 0。在做出任意次數的翻轉後,將該矩陣的每一行都按照二進位制數來解釋,矩陣的得分就是這些數字的總和。返回盡可能高的分數。示例 輸入 0,0,...