目录
一、矩阵置零
1、题目描述
2、题解
3、源码
class Solution:
def setZeroes(self, matrix: List[List[int]]) -> None:
m, n = len(matrix), len(matrix[0])
row, col = [False] * m, [False] * n
for i in range(m):
for j in range(n):
if matrix[i][j] == 0:
row[i] = col[j] = True
for i in range(m):
for j in range(n):
if row[i] or col[j]:
matrix[i][j] = 0
二、搜索矩阵
1、题目描述
2、题解
3、源码
class Solution:
def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
for i in range(len(matrix)):
for j in range(len(matrix[0])):
if matrix[i][j] == target:
return True
return False
三、颜色分类
1、题目描述
2、题解
3、源码
class Solution:
def sortColors(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
return nums.sort()
四、合并两个有序数组
1、题目描述
2、题解
3、源码
class Solution:
def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
# i = j = 0
# s = []
# while i < min(m,n) and j < min(m,n):
# if nums1[i] <= nums2[j]:
# s.append(nums1[i])
# i +=1
# else:
# s.append(nums2[j])
# j +=1
# while i < m:
# s.append(nums1[i])
# i +=1
# while j < n:
# s.append(nums2[j])
# return s
nums1[m:] = nums2#列表的拼接
nums1.sort()
五、链表反转2
1、题目描述
2、题解
3、源码
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def reverseBetween(self, head: ListNode, left: int, right: int) -> ListNode:
# 设置 dummyNode 是这一类问题的一般做法
dummy_node = ListNode(-1)
dummy_node.next = head
pre = dummy_node
for _ in range(left - 1):
pre = pre.next
cur = pre.next
for _ in range(right - left):
next = cur.next
cur.next = next.next
next.next = pre.next
pre.next = next
return dummy_node.next