日常刷题(20)

1. 矩阵置零

1.1. 题目描述

给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。
1 <= m, n <= 200

1.2. 示例

  • 示例1
    在这里插入图片描述
    输入:matrix = [[1,1,1],[1,0,1],[1,1,1]]
    输出:[[1,0,1],[0,0,0],[1,0,1]]

  • 示例2
    在这里插入图片描述
    输入:matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]
    输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]]

1.3. 题目解析

200以内可以遍历,先看行再看列。遍历行大家都会,遍历列可以使用zip(*matrix)的方式

1.4. 代码

class Solution:
    def __call__(self, nums: List[List[int]]):
        _nums = [row[:] for row in nums]
        for i, row in enumerate(nums):
            if 0 not in row:
                continue
            _nums[i] = [0] * len(row)

        for i, col in enumerate(zip(*nums)):
            if 0 not in col:
                continue
            for j in range(len(nums)):
                _nums[j][i] = 0
        nums[:] = _nums

2. 求字符串中所有整数的最小和

2.1. 题目描述

输入字符串s,输出s中包含所有整数的最小和。

说明:

字符串s,只包含 a-z A-Z ± ;
合法的整数包括

1) 正整数 一个或者多个0-9组成,如 0 2 3 002 102
2)负整数 负号 – 开头,数字部分由一个或者多个0-9组成,如 -0 -012 -23 -00023

2.2. 输入描述

包含数字的字符串

2.3. 输出描述

所有整数的最小和

2.4. 用例

输入 bb1234aa
输出 10
说明 无

输入 bb12-34aa
输出 -31
说明 1+2+(-34) = -31

2.5. 题目解析

正数最小值就是拆开了算单个数字,负数最小值就是整个和在一块,想通这一点就好做了

2.6. 代码

class Solution:
    def __call__(self, nums: str):
        ans = 0
        neg = ''
        for char in nums:
            if char == '-':
                neg += char
                
            elif char in '0123456789':
                if neg:
                    neg += char
                else:
                    ans += int(char)
            else:
                ans += eval(neg if neg else '0')
                neg = ''
        return ans
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值