剑指Offer
进击的reader
这个作者很懒,什么都没留下…
展开
-
剑指 Offer 42. 连续子数组的最大和
输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。 示例1: 输入: nums = [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 我的代码: class Solution: def maxSubArray(self, nums: List[int]) -> int: ans = -float('inf') sum = 0原创 2022-04-28 09:22:37 · 46 阅读 · 0 评论 -
剑指 Offer 32 - III. 从上到下打印二叉树 III
请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / 9 20 / 15 7 返回其层次遍历结果: [ [3], [20,9], [15,7] ] 我的想法: 之字形打印,其实就是根据行数不同,打印顺序出现变化,奇数行和偶数行的打印顺序不同,因此需要设置一个flag_cnt计数,表示行号的奇偶性 使用collectio原创 2022-04-27 15:13:50 · 620 阅读 · 0 评论 -
剑指 Offer 32 - I. 从上到下打印二叉树
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / 9 20 / 15 7 返回:[3,9,20,15,7] 解题思路 初始化ans为空列表 如果不是树节点,则返回空列表 初始化列表tree_deque作为存储树的容器,先将根节点root装入tree_deque 只要tree_deque不为空,就不断进入循环,初始化一个temp列表用来保存tree_deque弹出来的元素,每次弹出队头元素,将队头原创 2022-04-27 11:31:12 · 59 阅读 · 0 评论 -
剑指 Offer 35:复杂链表的复制
请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。 示例1: 输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]] 输出:[[7,null],[13,0],[11,4],[10,2],[1,0]] 我的方法: 通过链表构造列表,再通过列表构造链表,很复杂!!! """ # Definition for a Node. clas原创 2022-04-24 14:32:38 · 103 阅读 · 0 评论 -
剑指Offer24:反转链表
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 我的解法是这样的: 先遍历链表所有元素,将这些元素添加进入lst, 初始化一个固定头节点res和一个指针p,p的初值就是res 只要lst列表不为空,就将lst中的元素弹出赋值给p指向的节点,紧接着判断列表是否为空,如果不为空,就初始化p.next,并把p.next赋值给原创 2022-04-22 16:50:10 · 315 阅读 · 0 评论