8.22 ~ 8.28 尽量坚持刷力扣的每日一题,锻炼大脑思维。更新中~~
655. 输出二叉树【DFS + 模拟】
先递归求二叉树高度,然后再根据题目要求来模拟递归求答案数组。
AC代码
class Solution:
def printTree(self, root: Optional[TreeNode]) -> List[List[str]]:
def calDepth(rt: Optional[TreeNode]) -> int:
if rt == None:
return 0
else:
return max(calDepth(rt.left), calDepth(rt.right)) + 1
height = calDepth(root) - 1
m = height + 1
n = 2 ** m - 1
ans = [[''] * n for _ in range(m)] # 构造一个m * n大小的数组
def dfs(rt: Optional[TreeNode], r: int, c: int) -> None:
ans[r][c] = str(rt.val)
if rt.left:
dfs(rt.left, r + 1, c - 2 ** (height - r - 1))
if rt.right:
dfs(rt.right, r + 1, c + 2 ** (height - r - 1))
dfs(root, 0, (n - 1) // 2)
return ans
782. 变为棋盘
有难度,待更
1460. 通过翻转子数组使两个数组相等
思路
如果两个数组值都一样,而顺序不一样,可以通过无限次的翻转得到一样的数组,反之,则不能。于是只需要比较两个数组值是否相同即可。
AC代码
class Solution:
def canBeEqual(self, target: List[int], arr: List[int]) -> bool:
target.sort()
arr.sort()
return target == arr
658. 找到 K 个最接近的元素【自定义排序】
思路
讲数组按照abs(arr[i] -v)进行从小到大排序即为最接近x的k个元素,之后在对前k个数排序即为升序。
AC代码
class Solution:
def findClosestElements(self, arr: List[int], k: int, x: int) -> List[int]:
arr.sort(key=lambda v: abs(v - x))
return sorted(arr[:k])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。