有乙個二維矩陣 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,...