Day41_1203
专注时间:3H36min
每日任务:计算机网络50分钟( 0 分钟),搜广推90分钟~上不封顶+手撕目录里的算法( 60+20 ),二刷hot100算法题2道(完成 2 道),刑法实务考试复习50分钟( 57 分钟看完了 )
学习内容: 如上
总结与心得: 明明睡得早起得晚,学到中午、晚上还是犯困而且确实睡着了。
《41.缺失的第一个正数》天才,自己想出来的。

python
class Solution(object):
def firstMissingPositive(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
#存进set里面 然后从1到len(nums)开始去查set里面有没有这个数字
occ = set(nums)
n = len(nums)
# for 循环遍历列表,逐个添加数字到 set
#for num in num_list:
# num_set.add(num) # set.add() 方法:添加单个元素,重复元素会自动跳过
#或者
# 1. 定义包含数字的列表(可重复、无序)
#num_list = [1, 2, 3, 2, 4, 5, 1, 6]
# 2. 直接用 set() 转换(接收列表为可迭代对象)
#num_set = set(num_list)
for i in range(1,n+2):
if i not in occ:
return i
python
class Solution(object):
def firstMissingPositive(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
n = len(nums)
for i in range(n):
if nums[i]<=0:
nums[i] = n+1
for i in range(n):
getnum = abs(nums[i])
#x<=n的话 在下标x-1处(给这个地方的数做标记)打负号标记
if getnum<=n:
nums[getnum-1] = -abs(nums[getnum-1])
for i in range(n):
if nums[i]>0:
return i+1
#如果里面没有正数,就return n+1
return n+1
《73.矩阵置零》
python
class Solution(object):
def setZeroes(self, matrix):
"""
:type matrix: List[List[int]]
:rtype: None Do not return anything, modify matrix in-place instead.
"""
#非原地:o(n^2) 每个行 每个列 如果读到0就标记为True。 然后赋值
r = len(matrix)
c = len(matrix[0])
row = [False]*r
col = [False]*c
for i in range(r):
for j in range(c):
if matrix[i][j]==0:
row[i]=True
col[j]=True
for i in range(r):
if row[i]==True:
for j in range(c):
matrix[i][j] = 0
for j in range(c):
if col[j]==True:
for i in range(r):
matrix[i][j] = 0
python
class Solution(object):
def setZeroes(self, matrix):
"""
:type matrix: List[List[int]]
:rtype: None Do not return anything, modify matrix in-place instead.
"""
#非原地:o(n^2) 每个行 每个列 如果读到0就标记为True。 然后赋值
#现在原地的话,需要在原地设置一个哈希数组,实现和非原地一样的效果。那么可以考虑第一行第一列
r = len(matrix)
c = len(matrix[0])
rowis0 = False
colis0 =False
for i in range(c):
if matrix[0][i]==0:
rowis0 = True
for j in range(r):
if matrix[j][0]==0:
colis0 = True
for i in range(1,r):
for j in range(1,c):
if matrix[i][j]==0:
matrix[i][0]=0
matrix[0][j]=0
for i in range(1,r):
for j in range(1,c):
if matrix[i][0]==0 or matrix[0][j]==0:
matrix[i][j]=0
if rowis0 is True:
for i in range(c):
matrix[0][i]=0
if colis0 is True:
for j in range(r):
matrix[j][0]=0