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