LeetCodeCampsDay10栈与队列part01
LeetCodeCampsDay10栈与队列part01
使用队列实现栈;
使用栈实现队列;
以及两个关于栈的题目
232. 用栈实现队列
https://leetcode.cn/problems/implement-queue-using-stacks/
请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):
实现 MyQueue 类:
void push(int x) 将元素 x 推到队列的末尾
int pop() 从队列的开头移除并返回元素
int peek() 返回队列开头的元素
boolean empty() 如果队列为空,返回 true ;否则,返回 false
说明:
你 只能 使用标准的栈操作 —— 也就是只有 push to top, peek/pop from top, size, 和 is empty 操作是合法的。
你所使用的语言也许不支持栈。你可以使用 list 或者 deque(双端队列)来模拟一个栈,只要是标准的栈操作即可。
示例 1:
12345678910111213输入:[&quo ...
LeetCodeCampsDay9字符串part02
LeetCodeCampsDay9字符串part02
字符串反转/kmp算法/重复字符串的查找
151. 反转字符串中的单词
https://leetcode.cn/problems/reverse-words-in-a-string/
给你一个字符串 s ,请你反转字符串中 单词 的顺序。
单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。
返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。
**注意:**输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。
示例 1:
12输入:s = "the sky is blue"输出:"blue is sky the"
示例 2:
123输入:s = " hello world "输出:"world hello"解释:反转后的字符串中不能存在前导空格和尾随空格。
示例 3:
123输入:s = "a good ...
LeetCodeCampsDay8字符串01
LeetCodeCampsDay8字符串part01
双指针/字符串反转/python列表与字符串互换/python列表语法糖
344. 反转字符串
https://leetcode.cn/problems/reverse-string/
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。
不要给另外的数组分配额外的空间,你必须**原地修改输入数组**、使用 O(1) 的额外空间解决这一问题。
示例 1:
12输入:s = ["h","e","l","l","o"]输出:["o","l","l","e","h"]
示例 2:
12输入:s = ["H","a","n","n","a","h"]输出:["h",&qu ...
LeetCodeCampsDay7哈希表part02
LeetCodeCampsDay7哈希表part02
双指针/生产者消费者/HashTable
383. 赎金信
https://leetcode.cn/problems/ransom-note/
给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。
如果可以,返回 true ;否则返回 false 。
magazine 中的每个字符只能在 ransomNote 中使用一次。
示例 1:
12输入:ransomNote = "a", magazine = "b"输出:false
示例 2:
12输入:ransomNote = "aa", magazine = "ab"输出:false
示例 3:
12输入:ransomNote = "aa", magazine = "aab"输出:true
提示:
1 <= ransomNote.length, magazine.length ...
LeetCodeCampsDay6哈希表part01
LeetCodeCampsDay6哈希表part01
以及几题目主要利用hash table的“唯一性”思想解决题目
关键词:哈希表;快慢指针;双指针;用set/dict/当成hash表;
242. 有效的字母异位词
https://leetcode.cn/problems/valid-anagram/
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的 字母异位词。
示例 1:
12输入: s = "anagram", t = "nagaram"输出: true
示例 2:
12输入: s = "rat", t = "car"输出: false
提示:
1 <= s.length, t.length <= 5 * 104
s 和 t 仅包含小写字母
进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?
思路
使用hash table可解决
开辟一块26个int型的数组即可,比如对于字符串s,"a"出现一次 ...
LeetCodeCampsDay4链表part02
LeetCodeCampsDay4链表part02
大多修改/删除/添加操作需要使用dummy_head;仅查询的话,可以不用dummy_head
如果需要一遍扫描完成一些题目,需要借用额外的变量(时间换空间),比如多指针/快慢指针
24. 两两交换链表中的节点
https://leetcode.cn/problems/swap-nodes-in-pairs/
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
示例 1:
12输入:head = [1,2,3,4]输出:[2,1,4,3]
示例 2:
12输入:head = []输出:[]
示例 3:
12输入:head = [1]输出:[1]
提示:
链表中节点的数目在范围 [0, 100] 内
0 <= Node.val <= 100
思路
初始化
需要创建dummy_head,方便解题,尤其头节点和第二个节点的交换,有dummy_head后更方便
如果current is None或current.next is Non ...
LeetCodeCampsDay3链表part01
LeetCodeCampsDay3链表part01
主要与链表相关
记住:一般涉及到 增删改操作,用虚拟头结点dummy_head都会方便很多, 如果只能查的话,用不用虚拟头结点都差不多。
链表理论基础
建议:了解一下链表基础,以及链表和数组的区别
文章链接:https://programmercarl.com/%E9%93%BE%E8%A1%A8%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html
203. 移除链表元素
https://leetcode.cn/problems/remove-linked-list-elements/
一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。
示例 1:
12输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5]
示例 2:
12输入:head = [], val = 1输出:[]
示例 3:
12输入:head = [7,7,7,7], val = 7输出:[]
提示:
...
IELTsSpeaking
改变世界的发明
Part 2
Describe an invention that has changed the world in a positive way
You should say:
• what it is
• Basically, AI brings many benefits
• how it influences people of different ages
• explain how it changed people’s lives = how you felt about it
大纲
• what it is
• AI is a new invention that was just released several years ago
• For example, there are many AI applications like DeepSeek and ChatGPT
• Personally, I use it everyday
...
LeetCodeCampsDay2数组part02
LeetCodeCampsDay2数组part02
同样需要使用快/慢指针/双指针,另外,可以使用前缀和数组、二分查找
209. 长度最小的子数组
https://leetcode.cn/problems/minimum-size-subarray-sum/
问题
给定一个含有 n 个正整数的数组和一个正整数 target
找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度**。**如果不存在符合条件的子数组,返回 0 。
示例 1:
123输入:target = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组 [4,3] 是该条件下的长度最小的子数组。
示例 2:
12输入:target = 4, nums = [1,4,4]输出:1
示例 3:
12输入:target = 11, nums = [1,1,1,1,1,1,1,1]输出:0
提示:
1 <= target <= 109
1 <= nums.length <= ...
LeetCodeCampsDay1数组part01
LeetCodeCampsDay1数组part01
day1的三个题目都可以使用快慢指针/双指针/多指针的思路,
慢指针用于存放结果,快指针是遍历原数组用的
27. 移除元素
https://leetcode.cn/problems/remove-element/
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。
假设 nums 中不等于 val 的元素数量为 k,要通过此题,您需要执行以下操作:
更改 nums 数组,使 nums 的前 k 个元素包含不等于 val 的元素。nums 的其余元素和 nums 的大小并不重要。
返回 k。
示例 1:
1234输入:nums = [3,2,2,3], val = 3输出:2, nums = [2,2,_,_]解释:你的函数函数应该返回 k = 2, 并且 nums 中的前两个元素均为 2。你在返回的 k 个元素之外留下了什么并不重要(因此它们并不计入评测)。
示例 2:
12345输入:nums = [0,1 ...










