内容简介:上一篇:题目:废话:这次真的比以往的要难做,初次看题目,懵逼!题目都没懂!!!换个日子,咦?可以做做喔!
上一篇: LeetCode子域名访问计数-Python3.7<五>
题目: https://leetcode-cn.com/problems/score-after-flipping-matrix/description/
废话:这次真的比以往的要难做,初次看题目,懵逼!题目都没懂!!!换个日子,咦?可以做做喔!
有一个二维矩阵 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
思考关键点 :
1、 1在哪里 使二进制数更大?
2、从最高位(即最左边)开始增大数值
3、改变的同时不能影响更高位(即最更左边的数字),否则组成二进制数又变小了
4、二进制的相加(e.g: 它们是相等的 1*(2**3)+1*(2**0) = 0b1000+0b1)
因此代码思路:
1、每行的第一列必须为1
2、改变每列(除第一列),如果该列满足0的个数大于1的个数,否则得不偿失
3、算总得分
class Solution:
def matrixScore(self, A):
"""
:type A: List[List[int]]
:rtype: int
"""
if A==[]:
return 0
rowNum = len(A)
columnNum = len(A[0])
for row in A:
if row[0]==0:
row[0]=1
for column in range(1,columnNum):
if row[column]==1:
row[column]=0
else:
row[column]=1
print(columnNum)
if columnNum>1:
for column1 in range(1,columnNum):
sum0=0
for row in range(rowNum):
if A[row][column1]==0:
sum0=sum0+1
print(sum0)
if (sum0*2>rowNum or sum0==rowNum):
for row in A:
if row[column1]==0:
row[column1]=1
else:
row[column1]=0
score = 0
for row in A:
for i in range(columnNum):
tmp=(int)(row[i])
score = score + tmp*(2**(columnNum-1-i))
return score
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
解密硅谷
[美]米歇尔 E. 梅西纳(Michelle E. Messina)、乔纳森 C. 贝尔(Jonathan C. Baer) / 李俊、李雪 / 机械工业出版社 / 2018-12 / 50.00
《解密硅谷》由身处硅谷最中心的连续创业者米歇尔·梅西纳和资深的投资人乔纳森·贝尔联合撰写,二人如庖丁解牛一般为读者深入剖析硅谷成功的原因:从硅谷的创新机制、创业生态、投资领域的潜规则、秘而不宣的价值观等角度,让阅读本书的人能够在最短的时间内,拥有像硅谷人一样的商业头脑,从而快速发现机遇,顺利地躲过创业的坑,熬过创业生死挑战中的劫数,带领初创公司顺利地活下去,并实现快速增长。 如果初创公司能够......一起来看看 《解密硅谷》 这本书的介绍吧!