141. 环形链表
- 题意: 判断链表是否有环
- 思路: 快慢指针
- 代码:
1 | def hasCycle(self, head: Optional[ListNode]) -> bool: |
- 备注: 边界情况难以判断,建议背模板
121. 买卖股票的最佳时机
- 题意: 只能买卖一次
- 思路: 维护 min_price 和 max_profit
- 代码:
1 | def maxProfit(self, prices: List[int]) -> int: |
122. 买卖股票的最佳时机 II
- 题意: 可以买卖多次
- 思路: 假设一直买卖,把 prices[i+1] - prices[i] 为正值的都加起来
- 代码:
1 | def maxProfit(self, prices: List[int]) -> int: |
215. 数组中的第K个最大元素
- 思路: 堆
- 维护一个大小为 K 的最小堆, 里面存着到目前为止的前 K 大元素
- 多了就移除堆顶元素 (最小值)
- 完成遍历后, 堆顶元素就是前 K 大元素的最小值, 即第 K 大元素
- 维护一个大小为 K 的最小堆, 里面存着到目前为止的前 K 大元素
- 代码:
1 | def findKthLargest(self, nums: List[int], k: int) -> int: |