LeetCode 剑指offer
Drink_Coffee_Cat
It's never too late to learn
展开
-
Python 剑指offer 11
这道题讲这么多其实就是找最小值。。。class Solution: def minArray(self, numbers: List[int]) -> int: return min(numbers)原创 2021-08-25 16:35:05 · 132 阅读 · 0 评论 -
Python 剑指offer 10-2
class Solution: def numWays(self, n: int) -> int: a, b = 1, 1 for i in range(n): a, b = b, a + b return a % 1000000007原创 2021-08-25 16:11:51 · 89 阅读 · 0 评论 -
Python 剑指offer 10-1
class Solution: def fib(self, n: int) -> int: if n == 0: return 0 elif n == 1: return 1 else: x = 0 y = 1 for i in range(n - 1): x, y = y, x + y .原创 2021-08-25 15:56:28 · 60 阅读 · 0 评论 -
Python 剑指offer 09
解题思路:栈无法实现队列功能: 栈底元素(对应队首元素)无法直接删除,需要将上方所有元素出栈。双栈可实现列表倒序: 设有含三个元素的栈 A = [1,2,3]A=[1,2,3] 和空栈 B = []B=[]。若循环执行 AA 元素出栈并添加入栈 BB ,直到栈 AA 为空,则 A = []A=[] , B = [3,2,1]B=[3,2,1] ,即 栈 BB 元素实现栈 AA 元素倒序 。利用栈 BB 删除队首元素: 倒序后,BB 执行出栈则相当于删除了 AA 的栈底元素,即对应队首元素。函数设.转载 2021-08-25 15:44:05 · 80 阅读 · 0 评论 -
Python 剑指offer 07
解题思路:前序遍历性质: 节点按照 [ 根节点 | 左子树 | 右子树 ] 排序。中序遍历性质: 节点按照 [ 左子树 | 根节点 | 右子树 ] 排序。以题目示例为例:前序遍历划分 [ 3 | 9 | 20 15 7 ]中序遍历划分 [ 9 | 3 | 15 20 7 ]根据以上性质,可得出以下推论:前序遍历的首元素 为 树的根节点 node 的值。在中序遍历中搜索根节点 node 的索引 ,可将 中序遍历 划分为 [ 左子树 | 根节点 | 右子树 ] 。根据中序遍历中的左 / 右.转载 2021-08-25 15:28:41 · 90 阅读 · 0 评论 -
Python 剑指offer 06
class Solution: def reversePrint(self, head: ListNode) -> List[int]: res = [] while head: res.append(head.val) head = head.next res.reverse() return res原创 2021-08-25 14:42:36 · 71 阅读 · 0 评论 -
Python 剑指offer 05
这题是真的快乐class Solution: def replaceSpace(self, s: str) -> str: s = s.replace(' ', '%20') return s原创 2021-08-25 14:40:44 · 73 阅读 · 0 评论 -
Python 剑指offer 04
解题思路:若使用暴力法遍历矩阵 matrix ,则时间复杂度为 O(NM)O(NM) 。暴力法未利用矩阵 “从上到下递增、从左到右递增” 的特点,显然不是最优解法。如下图所示,我们将矩阵逆时针旋转 45° ,并将其转化为图形式,发现其类似于 二叉搜索树 ,即对于每个元素,其左分支元素更小、右分支元素更大。因此,通过从 “根节点” 开始搜索,遇到比 target 大的元素就向左,反之向右,即可找到目标值 target 。“根节点” 对应的是矩阵的 “左下角” 和 “右上角” 元素,本文称之为 标志数.转载 2021-08-25 14:25:29 · 59 阅读 · 0 评论 -
Python 剑指offer 03
最容易想到的办法是双遍历,但实际不可行,消耗的内存和运行的时间都会很大解法1用字典统计数字出现的次数,如果数字已经在字典里则返回数字# 解法1class Solution1: def findRepeatNumber(self, nums) -> int: count = dict() for num in nums: if num not in count: count[num] = 1 .原创 2021-08-25 13:56:45 · 64 阅读 · 0 评论