![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
云卷云舒%
这个作者很懒,什么都没留下…
展开
-
leetcode 36有效的数独
/** * @param {character[][]} board * @return {boolean} */var isValidSudoku = function(board) { // 三个方向判重 const [rows, columns, boxes] = [{}, {}, {}]; // 遍历数独 for (let i = 0; i < 9; i++) { for (let j = 0; j < 9; j++) { ...原创 2022-05-09 17:19:51 · 276 阅读 · 0 评论 -
创建大顶堆找topK
/** * @param {number[]} nums * @param {number} k * @return {number} */ // 整个流程就是上浮下沉【上浮就是构建成大顶堆,下浮就是将最大值浮到末尾】var findKthLargest = function(nums, k) { let heapSize=nums.length buildMaxHeap(nums,heapSize) // 构建好了一个大顶堆 // 进行下沉 大顶堆是最大元素下沉到末尾【因为是找t.原创 2022-04-25 15:11:06 · 1244 阅读 · 0 评论 -
leetcode 215. 数组中的第K个最大元素 js
暴力解法:题目要求我们找到「数组排序后的第 k 个最大的元素,而不是第 k个不同的元素」。「数组排序后的第 kk 个最大的元素」换句话说:从右边往左边数第 k 个元素(从 1 开始),那么从左向右数是第几个呢,我们列出几个找找规律就好了。一共 6个元素,找第 2大,下标是 4;一共 6个元素,找第 4大,下标是 2。因此升序排序以后,目标元素的下标是 N - k,这里 N是输入数组的长度。var findKthLargest = function(nums, k) { nu...原创 2022-04-20 15:28:11 · 288 阅读 · 0 评论 -
js实现快速排序
选择数组中的一个值作为基准,将数组中小于该值的数置于该数之前,大于该值的数置于该数之后,接着对该数前后的两个数组进行重复操作直至排序完成。【递归】 function quickSort(arr) { if (arr.length <= 1) { return arr; } const num = arr[0]; let left = []; let right = []; // 注意这里i从1开始 for (let i = 1原创 2022-04-19 11:22:50 · 271 阅读 · 0 评论 -
leetcode 146 LRU 缓存 JS
/** * @param {number} capacityMap 这个 ES6 新增数据结构是 有序的,即不仅可以存储键值对(关键字-值),还可以通过 delete 和 set 的 API 对数据进行更新,最后 set 的数据默认在 Map 的末尾因此利用好上面的性质,这题其实非常容易了,对于题目的 第二点 和 第三点 要求,在每次 get 和 put 已存在队列中的值,或新增值,直接 delete 删掉后,再 set 进行更新到 Map 最后即可(最新) */var LRUCa...原创 2022-04-18 10:24:45 · 238 阅读 · 2 评论 -
leetcode 3 无重复字符的最长子串JS
滑动窗口是一种基于双指针的一种思想,两个指针指向的元素之间形成一个窗口。在具体使用之前,我们知道窗口实际是两个指针之间形成的区域,那关键就是这两个指针是如何移动的。1.初始时,左右指针left,right都指向第0个元素,窗口为[left,right),注意这里是左闭右开,因此初始窗口[0,0)区间没有元素,符合我们的初始定义2.开始循环遍历整个数组元素,判断当前right指针是否超过整个数组的长度,是退出循环,否则执行第3步3.然后right指针开始向右移动一个长度,并更新窗口内的...原创 2022-04-13 17:17:09 · 561 阅读 · 0 评论 -
leetcode 206 反转链表 JS
/** * Definition for singly-linked list. * function ListNode(val, next) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefined ? null : next) * } *//** * @param {ListNode} head * @return {ListNode} */var reverseLi...原创 2022-04-11 15:54:44 · 1570 阅读 · 0 评论 -
leetcode 121 买卖股票的最佳时机 JS
暴力解法:双层循环,会超时/** * @param {number[]} prices * @return {number} */var maxProfit = function(prices) { let len = prices.length let sub = 0 for(let i = 0; i < len; i++){ for(let j = i + 1; j < len; j++){ if(pr...原创 2022-04-07 16:42:04 · 498 阅读 · 0 评论 -
leetcode 15 三数之和 JS版本
/** * @param {number[]} nums * @return {number[][]} */var threeSum = function(nums) { let len = nums.length let arr = [] let resSet = new Set() for(let x = 0; x < len - 2; x++) { for(let y = x+1; y < len - 1; y原创 2022-03-28 17:14:39 · 600 阅读 · 0 评论