题目 | 思路 |
---|---|
1.两数之和 | 哈希表 |
2.两数相加 | 链表操作 |
3. 无重复字符的最长子串 | 滑动窗口,特别注意数组越界情况! |
4. 寻找两个正序数组的中位数 | |
5.最长回文子串 | 从中间向两边扩展,注意整个字符串都是回文串的边界情况 |
10.正则表达式匹配 | 动态规划,要在两个字符前都加个空格 |
11.盛水最多的容器 | 左右双指针 |
15.三数之和 | 排序+双指针+剪枝 |
17.电话号码的字母组合 | 回溯 |
19.删除链表的倒数第N个节点 | 快慢指针 |
20.有效的括号 | 栈,注意栈pop前需要判断是否为空 |
21.合并两个有序链表 | 双指针 |
22.括号生成 | 回溯法,用变量记录能生成的右括号数 |
23.合并K个升序链表 | 堆 |
31.下一个排列 | 1. 从后向前 查找第一个 相邻升序 的元素对 (i,j),满足 A[i] < A[j]。此时 [j,end) 必然是降序 2.在 [j,end) 从后向前 查找第一个满足 A[i] < A[k] 的 k 3.将 A[i] 与 A[k] 交换 4.可以断定这时 [j,end) 必然是降序,逆置 [j,end),使其升序 5. 如果在步骤 1 找不到符合的相邻元素对,说明当前 [begin,end) 为一个降序顺序,则直接跳到步骤 4 |
32.最长有效括号 | |
33.搜索旋转排序数组 | 二分查找,有序的那一半的范围是可以确定的 |
34.在排序数组中查找元素的第一个和最后一个位置 | 二分查找 |
39.组合总和 | 回溯,先排序数组剪枝 | </
leetcode刷题笔记
于 2025-01-04 19:24:24 首次发布