Day18 - 20. 有效的括号


题目链接 :https://leetcode.cn/problems/valid-parentheses/description/ 问题理解: 我们需要判断一个只包含括号的字符串是否有效。有效的标准是: 每种左括号必须用相同类型的右括号闭合 括号必须按正确的顺序闭合(即后开的括号要先闭合) 每个右括

Day17 - 225. 用队列实现栈


题目链接:https://leetcode.cn/problems/implement-stack-using-queues/description/ 1)用 collections.deque 实现队列 deque 是双端队列,适合高效的头尾操作: class MyStack: def

Day17 - 232.用栈实现队列


题目链接:https://leetcode.cn/problems/implement-queue-using-stacks/description/ 题目解析: 1. 队列的特性 队列是 先进先出(FIFO) 的,比如排队买奶茶,先来的人先拿到奶茶。 但栈是 后进先出(LIFO) 的,就像一摞盘子

Day17 - 栈和队列理论基础


1.栈(stack) 栈是 后进先出(LIFO) 的数据结构,常用操作是 push(入栈)和 pop(出栈)。 Python 中直接用 列表(list) 即可实现: stack = [] #入栈 stack.append(1) stack.append(2) #出栈 top = stack.po

Day16 - KMP 算法(理论篇)


文本串 aabaabaaf 模式串 aabaaf 问题:在文本串中aabaabaaf找到模式串aabaaf 的位置 理解暴力算法的痛点 如果使用暴力算法,模式串匹配失败时,会从头开始,文本串也会回退,效率大幅下降。 文本串 aabaabaaf 模式串 aabaaf 当b≠f的时候,匹配失败,文本串从

Day16 - 151.翻转字符串里的单词


题目链接:https://leetcode.cn/problems/reverse-words-in-a-string/description/ 核心方法:双指针 class Solution: def reverseWords(self, s: str) -> str: w

Day15 - 541. 反转字符串 II


题目链接:https://leetcode.cn/problems/reverse-string-ii/description/ 核心方法:双指针 题目解析: 从字符串的开头开始,每次处理 2k 个字符。 在这 2k 个字符中,反转前 k 个字符。 如果剩下的字符不足 k 个,则将这些剩余字符全部反

Day14 - 344. 反转字符串


题目链接:https://leetcode.cn/problems/reverse-string/description/ 核心方法:双指针-交换 class Solution: def reverseString(self, s: List[str]) -> None:

Day13 - 18.四数之和


题目链接:https://leetcode.cn/problems/4sum/ 核心方法:双指针 解析:比”Day12 - 15. 三数之和“多了一个移动的下标 j class Solution: def fourSum(self, nums: List[int], target: int)

Day12 - 15. 三数之和


题目链接:https://leetcode.cn/problems/3sum/description/ 核心方法 :双指针 # # @lc app=leetcode.cn id=15 lang=python3 # # [15] 三数之和 # # @lc code=start class Solut