LeetCode 21-30
21、合并两个有序链表 https://leetcode-cn.com/problems/merge-two-sorted-lists/
提供两种做法 1、我们将这一步骤可以看为归并排序最后一步合并的操作,然后利用dummyNode即可
1 | class Solution { |
2、递归
1 | class Solution { |
22、括号生成https://leetcode-cn.com/problems/generate-parentheses/
dfs+回溯
1 | class Solution { |
23、合并K个排序链表 https://leetcode-cn.com/problems/merge-k-sorted-lists/
利用最小堆,并且依次取出
1 | class Solution { |
24、两两交换链表中的节点 https://leetcode-cn.com/problems/swap-nodes-in-pairs/
利用递归,我们将整个链表分为三个部分,head -> head.next->剩余部分(剩余部分为已经处理好的)
那么此时我们只需要将上述链表转换为head.next->head->剩余部分
1 | class Solution { |
25、K个一组翻转链表 https://leetcode-cn.com/problems/reverse-nodes-in-k-group/
递归解法
1 | class Solution { |
非递归解法,利用多个指针
1 | class Solution { |
26、删除排序数组中的重复项 https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/
我们利用快慢指针,其中慢指针所指的位置就是数组存放的位置,快指针用来遍历数组中的全部元素
1 | class Solution{ |
27、移除元素https://leetcode-cn.com/problems/remove-element/
与上一题同理,利用快慢指针,一个指针存放数组元素,另外一个遍历整个数组
1 | class Solution{ |
28、实现strStr() https://leetcode-cn.com/problems/implement-strstr/
我们遍历一遍haystack,如果碰到元素与needle的第一个元素相等,那么就继续遍历,否则就清0,然后重新判断
1 | class Solution{ |
29、两数相除 https://leetcode-cn.com/problems/divide-two-integers/
模拟除法的过程。 我们通过让除数一直向左移,达到逼近被除数的效果
1 | class Solution { |
30、串联所有单词的字串 https://leetcode-cn.com/problems/substring-with-concatenation-of-all-words/
采用哈希表+滑动窗口实现
1 | class Solution { |