最接近的三数之和-16
分发饼干-455
N皇后-51
单词搜索-79
二进制手表-401
电话号码的字母组合-17
二叉树的所有路径-257
路径总和-112
两两交换链表中的节点-24
有效的括号-20
无重复字符的最长子串-3
二分查找-704

递归与回溯

跳水板-面试题 16.11
顺次数-1291
螺旋矩阵 II-59
螺旋矩阵-54
矩阵置零-73
不同路径 III-980
字母大小写全排列-784
黄金矿工-1219
有重复字符串的排列组合-面试题 08.08
单词搜索 II-212
解数独-37
N皇后-51
单词搜索-79
二进制手表-401
子集 II-90
组合总和 III-216
组合总和 II-40
组合总和-39
子集-78
组合-77
全排列 II-47
全排列-46
分割回文串-131
复原IP地址-93
电话号码的字母组合-17
括号生成-22

动态规划

最长的斐波那契子序列的长度-873
最长重复子数组-718
下降路径最小和-931
最大正方形-221
恢复空格-面试题 17.13
最长单词-面试题 17.15
单词拆分 II-140
单词拆分-139
最长回文子串-5
无重叠区间-435
目标和-494
一和零-474
最长公共子序列-1143
摆动序列-376
最长上升子序列-300
最长等差数列-1027
解码方法-91
三角形最小路径和-120
最小路径和-64
括号生成-22
爬楼梯-70
买卖股票的最佳时机-121

双指针

最接近的三数之和-16
通过删除字母匹配到字典里最长单词-524
搜索二维矩阵 II-240
判断子序列-392
分发饼干-455
验证回文串-125
两数之和 II - 输入有序数组-167
合并两个有序数组-88
移动零-283

前缀和

和为K的子数组-560

位运算

找不同-389

查找表

找不同-389
两个数组的交集 II-350

BFS

跳跃游戏 IV-1345
跳跃游戏 III-1306
二叉树的最小深度-111
二叉树的最大深度-104
二叉树的右视图-199
二叉树的层序遍历-102
相同的树-100

排序

最长单词-面试题 17.15

  1. 给定一组单词words,编写一个程序,找出其中的最长单词,且该单词由这组单词中的其他单词组合而成。若有多个长度相同的结果,返回其中字典序最小的一项,若没有符合要求的单词则返回空字符串。
  2. 示例:
  3. 输入: ["cat","banana","dog","nana","walk","walker","dogwalker"]
  4. 输出: "dogwalker"
  5. 解释: "dogwalker"可由"dog""walker"组成。
  6. 提示:
  7. 0 <= len(words) <= 200
  8. 1 <= len(words[i]) <= 100
  9. 来源:力扣(LeetCode
  10. 链接:https://leetcode-cn.com/problems/longest-word-lcci
  11. 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

通过删除字母匹配到字典里最长单词-524

快速排序

颜色分类-75

给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。

我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。

必须在不使用库的sort函数的情况下解决这个问题。



示例 1:

输入:nums = [2,0,2,1,1,0]
输出:[0,0,1,1,2,2]
示例 2:

输入:nums = [2,0,1]
输出:[0,1,2]


提示:

n == nums.length
1 <= n <= 300
nums[i] 为 0、1 或 2


进阶:

你可以不使用代码库中的排序函数来解决这道题吗?
你能想出一个仅使用常数空间的一趟扫描算法吗?

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sort-colors
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
var sortColors = function (nums) {
    quickSort(nums);
};

function partition(arr, start, end) {
    let j = start;
    const target = arr[end];

    for (let i = start; i <= end; i++) {
        if (arr[i] < target) {
            [arr[i], arr[j]] = [arr[j], arr[i]];
            j++;
        }
    }
    return j - 1;
}

function quickSort(arr, start = 0, end = arr.length - 1) {
    if (end - start < 1) return arr;
    const index = partition(arr, start, end);
    quickSort(arr, start, index - 1);
    quickSort(arr, index + 1, end);
    return arr;
}

链表

移除链表元素-203
两数相加-3
两两交换链表中的节点-24
删除链表的倒数第N个节点-19
删除链表的节点-面试题18
反转链表II-92
反转链表 206

贪心算法

判断子序列-392
分发饼干-455
买卖股票的最佳时机 II-122

DFS

二叉树的最近公共祖先-236
将有序数组转换为二叉搜索树
删除二叉搜索树中的节点-450
路径总和 III-437
求根到叶子节点数字之和-129
二叉树的所有路径-257
左叶子之和-404
路径总和-112
平衡二叉树-110
对称二叉树-101
二叉树的最小深度-111
二叉树的最大深度-104
二叉树的层序遍历-102
路径总和 II-113
相同的树-100

二叉树

二叉树的最近公共祖先-236
将有序数组转换为二叉搜索树
删除二叉搜索树中的节点-450
路径总和 III-437
求根到叶子节点数字之和-129
二叉树的所有路径-257
左叶子之和-404
路径总和-112
平衡二叉树-110
对称二叉树-101
二叉树的最小深度-111
二叉树的最大深度-104
二叉树的右视图-199
二叉树的前序遍历-144
二叉树的层序遍历-102
路径总和 II-113
相同的树-100

栈和队列

二叉树的右视图-199
二叉树的前序遍历-144
简化路径-71
有效的括号-20
逆波兰表达式求值-150

滑动窗口

滑动窗口的最大值-239
找到字符串中所有字母异位词-438
最小覆盖子串-76
无重复字符的最长子串-3
长度最小的子数组-209

数据结构

LRU 缓存机制-146

二分查找

Pow(x, n)-50
x 的平方根-69
二分查找-704