lc marathon 8.22

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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值