56. 合并区间
python">class Solution:def merge(self, intervals: List[List[int]]) -> List[List[int]]:res = []if len(intervals) == 0:return resintervals.sort(key=lambda x:x[0])res.append(intervals[0])for intervali in intervals:if res[-1][1] >= intervali[0]:res[-1][1] = max(res[-1][1], intervali[1])else:res.append(intervali)return res
738. 单调递增的数字
python">class Solution:def monotoneIncreasingDigits(self, n: int) -> int:strNum = list(str(n))for i in range(len(strNum) - 1, 0, -1):if strNum[i - 1] > strNum[i]:strNum[i - 1] = str(int(strNum[i - 1]) - 1)strNum[i:] = '9' * (len(strNum) - i)return int(''.join(strNum))
968. 监控二叉树
python"># Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:# 0: 未覆盖# 1: 有摄像头# 2: 有覆盖def minCameraCover(self, root: Optional[TreeNode]) -> int:res = [0]if self.traversal(root, res) == 0:res[0] += 1return res[0]def traversal(self, cur, res):if not cur:return 2left = self.traversal(cur.left, res)right = self.traversal(cur.right, res)# 没有摄像头有覆盖,没有摄像头没有覆盖,有摄像头if left == 2 and right == 2:return 0elif left == 0 or right == 0:res[0] += 1return 1else:return 2
看起来挺复杂,但是代码很简单。