分享你的测试成长经历,吴老师免费送书 !
文 | 何发奋
难度分类
中等
题目描述
算法
-
首先通过行翻转使矩阵的第一列全部是1,因为高位是1的情况下组成的值必然更大 -
从第二列开始,如果此列的0多则按列翻转,如果1多则保持原样。原理则是某一列的1多组成的值相加的和越大如:
代码
(左右滑动或横屏阅读)
1def matrixScore(A):
2 #按行翻转,保证第一列的数都是1,即每一行都是以1开始的,翻转后以后的翻转仅能按照列翻转了
3 for i in range(len(A)):
4 if A[i][0] == 0:
5 for j in range(len(A[i])):
6 if A[i][j] ==0:
7 A[i][j] =1
8 else:
9 A[i][j] =0
10 # 从第二列开始统计此列的0和1的个数,如果0的个数大于1的个数,则进行按列翻转
11 for i in range(1,len(A[0])):
12 count = 0
13 temp = []
14 for j in range(len(A)):
15 if A[j][i] ==0:
16 count +=1
17 if count>len(A)//2:
18 for j in range(len(A)):
19 if A[j][i] ==0:
20 A[j][i] =1
21 else:
22 A[j][i] =0
23 result = 0
24 #按行读取,转换为十进制相加求结果
25 for line in A:
26 result +=int(''.join([str(a) for a in line]),2)
27 return result
附件代码-使用数学公式完成翻转
1def matrixScore(A):
2 #按行翻转,保证第一列的数都是1,即每一行都是以1开始的,翻转后以后的翻转仅能按照列翻转了
3 for i in range(len(A)):
4 if A[i][0] == 0:
5 for j in range(len(A[i])):
6 A[i][j] =1-A[i][j]
7 # 从第二列开始统计此列的0和1的个数,如果0的个数大于1的个数,则进行按列翻转
8 for i in range(1,len(A[0])):
9 count = 0
10 temp = []
11 for j in range(len(A)):
12 if A[j][i] ==0:
13 count +=1
14 if count>len(A)//2:
15 for j in range(len(A)):
16 A[j][i] = 1- A[j][i]
17 result = 0
18 #按行读取,转换为十进制相加求结果
19 for line in A:
20 result +=int(''.join([str(a) for a in line]),2)
21 return result
提取码:k5fv
无论上课或自学,
你首先需要准备:
每天 2 小时+的学习时间,
每天坚持写代码的习惯!
有投入才有产出,
10k+的涨幅需要 1 年以上的努力!
祝你成功!
光荣之路出品
测试大佬和小白的故事
2020年度测试现状报告
自动化测试的目标
手把手教你pytest测试框架
测开必备-flask网站开发
IOS真机移动端App+H5混合自动化测试实战
产品测试规范
内推:字节跳动 | 测试开发
招聘QQ群:203715128
文章转载自微信公众号:光荣之路
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/145673.html