文章目录
861. 翻转矩阵后的得分
是一个贪心的方法,先把第一列全部调成1(通过每行的转换)
然后对于后面的列进行列变换,
import numpy as np
class Solution:
def matrixScore(self, grid: List[List[int]]) -> int:
grid=np.array(grid)
# 第一位全部变成1
for index,line in enumerate(grid):
if line[0]==0:
grid[index]=rev(line)
# 后面保证每一列1的数目大于等于0
for index_col in range(1,len(grid[0])):
if not count(grid[:,index_col]):
grid[:,index_col]=rev(grid[:,index_col])
return score(grid)
def score(grid):
ns=0
for line in grid:
ns+=int("".join([str(j) for j in line]), 2)
return ns
def count(line):# 1的数目大于等于0的数目 返回True
if line.tolist().count(1)>=line.tolist().count(0):
return True
else:
return False
def rev(line):
return [0 if num ==1 else 1 for num in line]
九坤-01. 可以读通讯稿的组数[可以读通讯稿的组数 - 力扣 (LeetCode) 竞赛]
将
镜像号码 A + 原号码 B = 镜像号码 B + 原号码 A
转化为
原号码B - 镜像号码 B = 原号码 A - 镜像号码 A
每一个号码就会有它自己的特征啦
class Solution:
def numberOfPairs(self, nums: List[int]) -> int:
map={}
for num in nums:
re_num=int(str(num)[::-1])
key=num-re_num
if key in map:
map[key]+=1
else:
map[key]=1
ns=0
for key in map.keys():
ns+=(map[key])*(map[key]-1)//2
return ns%(pow(10,9)+7)
池塘计数 - 力扣 (LeetCode) 竞赛
对于每个点 都深度搜索周围的 然后设置已访问即可
class Solution:
def lakeCount(self, field: List[str]) -> int:
visisted=[[0 for i in range(len(field[0]))] for j in range(len(field))]
ns=0
for i in range(len(field)):
for j in range(len(field[0])):
if visisted[i][j]==0 and field[i][j]=='W':
dfs(i,j,visisted,field)
ns+=1
return ns
def dfs(i,j,visited,field):
if i<0 or i>=len(field) or j<0 or j>=len(field[0]):
return
if field[i][j]=='W' and visited[i][j]==0:
visited[i][j]=1
else:
return
dfs(i-1,j,visited,field)
dfs(i+1,j,visited,field)
dfs(i-1,j-1,visited,field)
dfs(i+1,j-1,visited,field)
dfs(i+1,j+1,visited,field)
dfs(i-1,j+1,visited,field)
dfs(i,j-1,visited,field)
dfs(i,j+1,visited,field)