自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(103)
  • 收藏
  • 关注

原创 JavaScript刷LeetCode拿offer-双指针技巧(上)

一般情况下,遍历数组(或者字符串)操作,都是采用单指针从前往后或者从后往前依次访问数组(或者字符串)中的元素。而对于以下情况,只采用单指针处理,则会徒增时间复杂度和空间复杂度:例如:找到两个数使得它们相加之和等于目标数,采用单指针处理,则需要嵌套循环,使得时间复杂度增长为 O(n^2);再例如:翻转数组,采用单指针处理,则需要额外内存空间,使得空间复杂度增长为 O(n);

2023-03-15 09:07:23 260

原创 JavaScript刷LeetCode拿offer-双指针技巧(下)

本篇主要介绍双指针技巧的第二类题型:对数组进行预处理之后,再采用双指针遍历。在 Medium 难度的题目中,此类问题可以归纳为 K-Sum 问题:两数之和:【881. 救生艇】;三数之和:【16. 最接近的三数之和】、【15. 三数之和】、【923. 三数之和的多种可能】;四数之和:【18. 四数之和】;

2023-03-15 09:07:06 258 1

原创 用javascript分类刷leetcode6.深度优先&广度优先(图文视频讲解)

输入:grid = [[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,1,1,0,1,0,0,0,0,0,0,0,0],[0,1,0,0,1,1,0,0,1,0,1,0,0],[0,1,0,0,1,1,0,0,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,1,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,0,0,0,0,0,0,1,1,0,0,0,0]]grid[i][j] 为 0 或 1。

2023-03-15 09:05:22 552

原创 JavaScript刷LeetCode拿offer-分治

今天没啥前言,分治很难,主要难在如何拆分后比较好治理合并,这比二分这些只要拆了就结束要难上一个 level,所以这里属于出入分治这种想法的思维,后续会尽可能的锻炼这样的做法;做一道分治,如果能用其他方法代替的时候,一般分治不算是最优解,起码很伤脑子;

2023-03-01 14:59:02 305

原创 JavaScript刷LeetCode拿offer-js版字典

与集合类似,字典也是一种存储唯一值的数据结构,但是它以键值对的形式来存储ES6中有字典,名为Map字典的常用操作:键值对的增删改查。

2023-02-28 09:16:50 95

原创 用javascript分类刷leetcode17.栈(图文视频讲解)

比赛开始时,记录是空白的。给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。“+” - 记录加 9 + 5 = 14 ,记录现在是 [5, -2, -4, 9, 5, 14]输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]输入:pushed = [1,2,3,4,5], popped = [4,3,5,1,2]输入:ops = [“5”,“-2”,“4”,“C”,“D”,“9”,“+”,“+”]

2023-02-28 09:15:14 118

原创 JavaScript刷LeetCode拿offer-二叉树层序遍历篇

博主最近在刷leetcode,做到二叉树套题的时候发现很多题的解题思路都是基于二叉树的层序遍历来完成的,因此写下这篇文章,记录一下二叉树层序遍历这件"神器"在实战的运用。

2023-02-28 09:15:06 129

原创 用javascript分类刷leetcode13.单调栈(图文视频讲解)

输入:matrix = [[“1”,“0”,“1”,“0”,“0”],[“1”,“0”,“1”,“1”,“1”],[“1”,“1”,“1”,“1”,“1”],[“1”,“0”,“0”,“1”,“0”]]解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输入:nums = [1,3,-1,-3,5,3,6,7], k = 3。

2023-02-27 11:09:54 288

原创 JavaScript刷LeetCode-字符串类解题技巧

我们把归为简单算法。接下来系列里,将系列文章里将为大家逐一介绍。

2023-02-27 11:09:37 232

原创 刷完这19道leetcode二分查找算法,不信进不了大厂

分析正常查找 target 值,直到找到左侧第一个,如果没有找到,则直接返回 [-1,-1]如果找到了左侧的 target 值,这个时候以左侧 left 为起点,再进行一次二分,求右侧第一个 target 值,最后返回即可时间复杂度 O(logn)if(!nums) return [ - 1 , - 1 ] let left = 0 , right = nums . length - 1 let ret = [ ] // 找左节点 while(left

2023-02-21 12:27:44 368

原创 用Js怒刷LeetCode

以上题目均为精选高频题,希望对大家有帮助.

2023-02-21 12:26:19 449

原创 用javascript分类刷leetcode11剪枝&回溯(图文视频讲解)

输入:board = [[“A”,“B”,“C”,“E”],[“S”,“F”,“C”,“S”],[“A”,“D”,“E”,“E”]], word = “ABCCED”输入:board = [[“A”,“B”,“C”,“E”],[“S”,“F”,“C”,“S”],[“A”,“D”,“E”,“E”]], word = “ABCB”输入:board = [[“A”,“B”,“C”,“E”],[“S”,“F”,“C”,“S”],[“A”,“D”,“E”,“E”]], word = “SEE”

2023-02-21 12:25:27 407

原创 JavaScript刷LeetCode模板技巧篇(一)

虽然很多人都觉得前端算法弱,但其实 JavaScript 也可以刷题啊!最近两个月断断续续刷完了 leetcode 前 200 的 middle + hard ,总结了一些刷题常用的模板代码。

2023-02-20 12:56:03 575

原创 刷完15道js版dp题,面试再也不怕了

某个男人 动态规划,而我作为一个致力称为厨师界最会写算法的前端,总得刷上一部分题,有那么一点发现吧,现在我们就来聊聊,菜鸡如我,发现了什么。

2023-02-20 12:54:27 600

原创 JavaScript刷LeetCode拿offer-高频链表题

首先需要了解链表的概念。

2023-02-19 14:49:10 314

原创 JavaScript刷LeetCode拿offer-高频链表题

首先需要了解链表的概念。

2023-02-19 14:47:24 289

原创 JavaScript刷LeetCode拿offer-贪心算法

学习算法的时候,总会有一些让人生畏的名词,比方动态规划贪心算法等,听着就很难;而这一 part 就是为了攻破之前一直没有系统学习的贪心算法;有一说一,做了这些贪心题,其实并没觉得发现了什么套路新大陆等,因为贪心有的时候很巧妙,而且想到就是想到了,没想到可能就不用贪心去做了,所以这属于做完只是刷了存在感的 part;唯一的收获就是减轻了对贪心的恐惧,明白它也就是一种局部贪心导致全局贪心得到最优解的一种思路方法,所以以后遇到了,也就能心平气和的去学习使用它了;下一 part 去做一下比较难的并查集。

2023-02-14 13:42:13 250

原创 JavaScript刷LeetCode拿offer-链表篇

链表(Linked List)是一种常见的基础数据结构,也是线性表的一种。一个线性表是 n 个具有相同特性的数据元素的有限序列,线性表的存储结构分为两类:顺序表(数组)和链表。的不同:数组在使用前需要先申请占用内存的大小,并且是,不适合,正是由于连续内存存储,使得。链表则克服了数组需要预先知道数据大小的缺点,可以充分地利用内存空间,实现,但是由于每个节点增加了指针域,。前面从存储方式的分析中,可以知道数组具备随机访问的能力,

2023-02-14 13:41:27 415

原创 用javascript分类刷leetcode19.数组(图文视频讲解)

给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。如果不存在符合条件的子数组,返回 0。解释:函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。解释:[4,2,3,1]、[2,4,1,3] 和 [4,2,1,3] 也会被视作正确答案。

2023-02-14 13:41:21 237

原创 用javascript分类刷leetcode13.单调栈(图文视频讲解)

输入:matrix = [[“1”,“0”,“1”,“0”,“0”],[“1”,“0”,“1”,“1”,“1”],[“1”,“1”,“1”,“1”,“1”],[“1”,“0”,“0”,“1”,“0”]]解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输入:nums = [1,3,-1,-3,5,3,6,7], k = 3。

2023-02-13 12:06:04 324

原创 JavaScript刷LeetCode拿offer-滑动窗口

JavaScript刷LeetCode拿offer-双指针技巧》中,简单地介绍了双指针技巧相比较单指针的优点,以及结合 Easy 难度的题目带大家进一步了解双指针的应用。滑动窗口算法(Sliding Window Algorithm);排序,前缀和等等),再利用双指针遍历;这两种方法都可以将双循环问题转化为单循环问题,从而有效地降低算法的时间复杂度。本篇主要介绍滑动窗口算法以及相关题型的解题思路,第二类题型会放在下一篇中讲解。

2023-02-13 12:05:51 337

原创 JavaScript刷LeetCode拿offer-经典高频40题vaScript刷LeetCode拿offer-经典高频40题

给定一个仅包含大小写字母和空格 ’ ’ 的字符串,返回其最后一个单词的长度。

2023-02-13 12:05:16 389

原创 JavaScript刷LeetCode拿offer-双指针技巧(下)

本篇主要介绍双指针技巧的第二类题型:对数组进行预处理之后,再采用双指针遍历。在 Medium 难度的题目中,此类问题可以归纳为 K-Sum 问题:两数之和:【881. 救生艇】;三数之和:【16. 最接近的三数之和】、【15. 三数之和】、【923. 三数之和的多种可能】;四数之和:【18. 四数之和】;

2023-02-07 10:22:21 194

原创 JavaScript刷LeetCode拿offer-并查集

并查集是合并集合的方式,对于一些关联性的集合,合并查询的方式可以使得题目分类处理,是一种题型的解决方案,这里最关键是构思好集合之间的关联关系;在这一 part 中,仅仅只是对部分题做了了解学习,远远没有达到可以手撕的程度,但是面试过程中遇到的并不算特别多,所以属于一个了解补充的 part,大家可以学习学习,还是挺有意思的;下一 part 做分治法。

2023-02-07 10:21:59 260

原创 JavaScript刷LeetCode拿offer-分治

今天没啥前言,分治很难,主要难在如何拆分后比较好治理合并,这比二分这些只要拆了就结束要难上一个 level,所以这里属于出入分治这种想法的思维,后续会尽可能的锻炼这样的做法;做一道分治,如果能用其他方法代替的时候,一般分治不算是最优解,起码很伤脑子;

2023-02-06 11:15:55 217

原创 用javascript分类刷leetcode15.链表(图文视频讲解)

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点。给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。解释:指定链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9。链表的所有值都是 唯一的,并且保证给定的节点 node 不是链表中的最后一个节点。输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]给你一个需要删除的节点 node。

2023-02-06 11:14:24 286

原创 JavaScript刷LeetCode拿offer-双指针技巧(上)

一般情况下,遍历数组(或者字符串)操作,都是采用单指针从前往后或者从后往前依次访问数组(或者字符串)中的元素。而对于以下情况,只采用单指针处理,则会徒增时间复杂度和空间复杂度:例如:找到两个数使得它们相加之和等于目标数,采用单指针处理,则需要嵌套循环,使得时间复杂度增长为 O(n^2);再例如:翻转数组,采用单指针处理,则需要额外内存空间,使得空间复杂度增长为 O(n);

2023-02-06 11:13:51 331

原创 JavaScript刷LeetCode拿offer-二叉树层序遍历篇

博主最近在刷leetcode,做到二叉树套题的时候发现很多题的解题思路都是基于二叉树的层序遍历来完成的,因此写下这篇文章,记录一下二叉树层序遍历这件"神器"在实战的运用。

2023-01-09 08:48:49 236

原创 JavaScript刷LeetCode拿offer-位运算

经常会有人问,作为前端,你在实际工作中用到过哪些算法,而我回答一般是,树和位运算;想想 webpack 上的那些依赖的版本类型,想想 react 源码中的那些 flag 的定义和运算,我觉得还是很有必要去学习一下位运算到底能解决一些什么问题。

2023-01-09 08:48:45 264

原创 用javascript分类刷leetcode19.数组(图文视频讲解)

给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。解释:[4,2,3,1]、[2,4,1,3] 和 [4,2,1,3] 也会被视作正确答案。

2023-01-09 08:48:20 294

原创 JavaScript刷LeetCode-字符串类解题技巧

我们把归为简单算法。接下来系列里,将系列文章里将为大家逐一介绍。

2023-01-06 08:08:29 241

原创 用javascript分类刷leetcode18.队列(图文视频讲解)

O(1)O(n)

2023-01-06 08:07:45 275

原创 JavaScript刷LeetCode拿offer-js版字典

与集合类似,字典也是一种存储唯一值的数据结构,但是它以键值对的形式来存储ES6中有字典,名为Map字典的常用操作:键值对的增删改查。

2023-01-06 08:07:31 331

原创 刷完这19道leetcode二分查找算法,不信进不了大厂

分析正常查找 target 值,直到找到左侧第一个,如果没有找到,则直接返回 [-1,-1]如果找到了左侧的 target 值,这个时候以左侧 left 为起点,再进行一次二分,求右侧第一个 target 值,最后返回即可时间复杂度 O(logn)if(!nums) return [ - 1 , - 1 ] let left = 0 , right = nums . length - 1 let ret = [ ] // 找左节点 while(left

2023-01-05 10:34:19 245

原创 用javascript分类刷leetcode4.贪心(图文视频讲解)

贪心法,又称贪心算法,贪婪算法,在对问题求解时,总是做出在当前看来最好的选择,期望通过每个阶段的局部最优选择达到全局最优,但结果不一定最优适用场景:简单的说,问题能够分解成子问题来解决,子问题的最优解能递推到最终问题的最优解,就能用贪心算法的到最后的最优解,这种子问题最优解称为最优子结构贪心算法与动态规划的不同点在于它对每个子问题的解决方案都做出当前的最优选择,不能回退,而动态规划会保留之前的运算结果,并根据之前的结果进行选择,有回退的功能,贪心是动态规划的理想化的情况。621. 任务调度器。

2023-01-05 10:33:42 173

原创 用Js怒刷LeetCode

以上题目均为精选高频题,希望对大家有帮助.

2023-01-05 10:32:45 358

原创 JavaScript刷LeetCode模板技巧篇(一)

虽然很多人都觉得前端算法弱,但其实 JavaScript 也可以刷题啊!最近两个月断断续续刷完了 leetcode 前 200 的 middle + hard ,总结了一些刷题常用的模板代码。

2023-01-04 11:56:50 303

原创 用javascript分类刷leetcode20.字符串(图文视频讲解)

(例如,“ACE” 是 “ABCDE” 的一个子序列,而 “AEC” 不是)一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。,循环字符串,遇到#就截掉最后一个字符,循环完毕之后,最后比较两个去除掉#退格之后的字符串是否相等,时间复杂度。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。

2023-01-04 11:55:30 306

原创 刷完15道js版dp题,面试再也不怕了

某个男人 动态规划,而我作为一个致力称为厨师界最会写算法的前端,总得刷上一部分题,有那么一点发现吧,现在我们就来聊聊,菜鸡如我,发现了什么。

2023-01-04 11:55:16 260

原创 JavaScript刷LeetCode拿offer-高频链表题表题

首先需要了解链表的概念。

2023-01-03 11:12:40 340 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除