javascript-leetcode icon indicating copy to clipboard operation
javascript-leetcode copied to clipboard

LeetCode 题解仓库🍖

Results 95 javascript-leetcode issues
Sort by recently updated
recently updated
newest added

![](https://images2017.cnblogs.com/blog/849589/201710/849589-20171015230557043-37375010.gif) 分治法典型应用,分治算法思想很大程度上是基于递归的,也比较适合用递归来实现。 `处理过程是由下到上的,先处理子问题,然后再合并。` 如果感觉自己对递归掌握的还不是很透彻的同学,可以移步我的这篇专栏[你真的懂递归吗?](https://juejin.cn/post/6844904161872461831)。 顾名思义,分而治之。一般分为以下三个过程: 1. 分解:将原问题分解成一系列子问题。 2. 解决:递归求解各个子问题,若子问题足够小,则直接求解。 3. 合并:将子问题的结果合并成原问题。 归并排序就是将待排序数组不断二分为规模更小的子问题处理,再将处理好的子问题合并起来,这样整个数组就都有序了。 ```js const mergeSort = function(arr) { const merge = (right, left) => { const result = [] let...

[冒泡排序可视化视频](https://www.reddit.com/r/programming/comments/e55j0i/bubble_sort_visualization/) 冒泡排序,简单粗暴,一句话解释: 冒泡排序在`每次冒泡操作时会比较相邻的两个元素`,看是否满足大小关系要求,不满足就将它俩互换。一直迭代到不再需要交换,也就是排序完成。 ```js const bubbleSort = function(arr) { const len = arr.length if (len < 2) return arr for (let i = 0; i < len; i++) { for...

[选择排序可视化视频](https://www.reddit.com/r/programming/comments/e5md13/selection_sort_visualization/) 选择排序和插入排序有些类似,也分已排序序列和未排序序列。 但是选择排序是`将最小的元素存放在数组起始位置,再从剩下的未排序的序列中寻找最小的元素,然后将其放到已排序的序列后面`。以此类推,直到排序完成。 ```js const selectSort = function(arr) { const len = arr.length let temp, minIndex for (let i = 0; i < len - 1; i++) { minIndex =...

![](https://images2017.cnblogs.com/blog/849589/201710/849589-20171015225645277-1151100000.gif) 插入排序顾名思义,对于未排序的数据,在已排序的序列中从后往前扫描,找到相应的位置进行插入,保持已排序序列中元素一直有序。 从 i 等于 1 开始遍历,拿到当前元素 curr,与前面的元素进行比较。 如果前面的元素大于当前元素,就把前面的元素和当前元素进行交换,不断循环直到未排序序列中元素为空,排序完成。 ```js const insertSort = function(arr) { const len = arr.length let curr, prev for (let i = 1; i < len;...

[原题链接](https://leetcode-cn.com/problems/permutations-ii/solution/qian-duan-shi-tang-ti-jie-chao-hao-li-ji-64vi/) ## 回溯 本题与 [46. 全排列](https://leetcode-cn.com/problems/permutations/solution/qian-duan-shi-tang-ti-jie-chao-hao-li-ji-e1a4/)解题思路一样。 不同之处:序列 nums 是可以重复的,要求按任意顺序返回所有不重复的全排列。 1. 去重就要排序,排序后可以使相同的数字相邻,便于去重。 2. 使用 used 数组记录使用过的数字,true 代表使用过,false 代表未使用过。 3. 在迭代的过程中需要考虑好情况,充分剪枝。 4. 在选择时记录 `used[i]` 状态,撤销时也要重置 `used[i]` 状态。 ```javascript const permuteUnique = function(nums)...