本題的目標是通過多次行或列的反轉,以使得陣列中各行所表示的二進位制數的值之和最大。
經分析可知,要使和最大,須優先使得列下標值較小的列中1的個數最多。所以得到如下思路:
通過行反轉使得第一列的所有元素均為1(即每行的第乙個元素均為1)
然後遍歷除第一列外的每一列,求出每列中1的個數,若其小於行數的一半,便對該列進行反轉。
最後對得到的最佳矩陣求和。
class solution
// 遍歷除第一列外的元素,記錄各列為1的個數儲存入陣列cnt
for (int j = 1; j < a[0].size(); j++)
if (cnt[j-1] < a.size()/2+1)
cnt[j-1] = a.size() - cnt[j-1];}}
// 求和
翻轉矩陣後的得分
問題描述 有乙個二維矩陣 a 其中每個元素的值為 0 或 1 翻轉是指選擇任一行或列,並轉換該行或列中的每乙個值 將所有 0 都更改為 1,將所有 1 都更改為 0。在做出任意次數的翻轉後,將該矩陣的每一行都按照二進位制數來解釋,矩陣的得分就是這些數字的總和。返回盡可能高的分數。示例 輸入 0,0,...
翻轉矩陣後的得分
翻轉矩陣後的得分 力扣861題。題目描述 有乙個二維矩陣 a 其中每個元素的值為 0 或 1 移動是指選擇任一行或列,並轉換該行或列中的每乙個值 將所有 0 都更改為 1,將所有 1 都更改為 0。在做出任意次數的移動後,將該矩陣的每一行都按照二進位制數來解釋,矩陣的得分就是這些數字的總和。返回盡可...
翻轉矩陣後的得分(LeetCode)
題目鏈結 有乙個二維矩陣 a 其中每個元素的值為 0 或 1 移動是指選擇任一行或列,並轉換該行或列中的每乙個值 將所有 0 都更改為 1,將所有 1 都更改為 0。在做出任意次數的移動後,將該矩陣的每一行都按照二進位制數來解釋,矩陣的得分就是這些數字的總和。返回盡可能高的分數。示例 輸入 0,0,...