自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

乡村中医的博客

立志成为一名出色的前端攻城狮????

  • 博客(34)
  • 收藏
  • 关注

原创 关于Vue报错(Property or method “xxx“ is not defined on the instance but referenced during render.)防踩坑

3. 函数传入得参数有误,本应是字符串缺传成了变量。1. script未闭合或多写。2. methods拼错。

2024-04-19 16:14:41 294

原创 js单调栈

只要其小于栈顶就入栈,大于栈顶元素就把栈顶元素去除同时记录当前元素为栈顶元素的第一个大于元素。关于接雨水就有一点小难度,主要设计单调栈的进阶用法:那就是栈顶下第一个元素就是当前栈顶元素的左边第一个大于它的元素,这样就可以拿到左右两边的第一个最大。大不了就是把nums1元素在nums2中的下标记录下来,最后按最大温度的方式求,再把对应下标一个一个提出来(对就是这么暴力,没啥其他办法)nums1 中数字 x 的 下一个更大元素 是指 x 在 nums2 中对应位置 右侧 的 第一个 比 x 大的元素。

2024-01-28 16:40:05 397

原创 js设计模式实例

设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。能够使一个单独的对象拥有公共/私有的方法和变量,从而屏蔽来自全局作用域的特殊部分。大家可能会想到使用Object对象,但是不要忘了函数也是对象,合理利用函数闭包,完全可以优雅的解决这个棘手的问题。而虽然js前端使用设计模式不像后端那么频繁,但是依然是一名程序员必备的本领,本文通过使用实例方便大家理解记忆设计模式,可用于面试前速记。与观者不同的是,订阅的是事件而非对象,而且有不同的记录本,记录不同的事。

2024-01-27 00:14:40 1185

原创 js算法不连续子序列

我们最先想到的是前n项肯定结果不能是负值,如果是负值,那就意味着前面的项都是在白加毕竟都是负数了还不如直接归0重新加。上一次我们说过如何求连续子序列,解决方法是模拟一个”棋盘“两两相同对撞,又因为是连续所以一定是对角线为上一组相同。是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。这到题算是上一道题的“面试版”,毕竟在出题的时候出题人都希望摆脱应试的标签,让自己的题目显得“有用”。以这种方法绘制线条,并返回我们可以绘制的最大连线数。

2024-01-21 21:47:05 364

原创 js使用动态数组解决子序列问题入门

连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每个 l

2024-01-19 16:30:34 317

原创 js算法买卖股票的最佳时机入门

涉及力扣题目:121.买卖股票的最佳时机122.买卖股票的最佳时机II123.买卖股票的最佳时机III买卖股票是算法中动态规划专题里很经典的题目,它的难度包括简单到困难,但是它们的解题思路只要使用动态规划那就是一模一样没有区别,这也意味着掌握关键的算法套路很重要。我们先来看一道入门题:跟据前一天的收益获取今天的收益,很经典的动态规划套路。这是一道简单题对于回溯算法来解决确实是一道简单题,但是使用动态规划反而要更难这是因为,我们需要对其进行dp数组含义进行抽象这在动态规划中往往是最难的。那我们开始进行

2024-01-16 23:31:49 677

原创 js解决打家劫舍

关于初始化就更简单了,推导公式涉及了两项那就手动初始化两项即可,第一项是nums[0],第二项考虑第一项取与不取的问题,第一项取第二项就是第一项的结果,第一项不取就是nums[1]那么首先来看如何推导,既然两个元素不能相邻那么可以n-2项加上当前元素,这是取自己的情况,那么不取的情况就是n-1项的结果了,最后取最大值即可(动态规划惯用手段)打家劫舍在面试中经常会遇到,题目的主要意思是给你一个数组,从里面取元素,相邻的不能取,求最大值。接下来题目变成了,数组变成一个二叉树相邻二叉树不能取。

2024-01-16 12:33:57 348

原创 万字!适合新手入门向的详细手写Promise解析

我们可以注意到then函数后面又跟了一个.then,这意味着then函数有返回值而且这个返回值甚至还能调用then函数,那么这个返回值是什么就很清楚了,我们只需要再返回一个Promsie的实例就行了,但返回一个实例还不行,因为我们知道then函数能够执行是因为类Promise的执行器函数内部执行了resolve函数改变了PromiseState,那么意味着我们初始化并返回实例时,需要在初始化时执行resolve或reject函数。其实只要记住接下来这句话就很好理解了,“函数在哪里传入就在哪里定义”。

2024-01-12 15:46:03 865

原创 完全背包中的排列组合

如果把遍历nums(物品)放在外循环,遍历target的作为内循环的话,举一个例子:计算dp[4]的时候,结果集只有 {1,3} 这样的集合,不会有{3,1}这样的集合,因为nums遍历放在外层,3只能出现在1后面!其实如果会01背包的话,只需要再遍历物品的for循环下,进行一次容量从当前遍历物品重量到最大容量的模拟,本质上还是比大小(取与不取的问题)所以本题遍历顺序最终遍历顺序:target(背包)放在外循环,将nums(物品)放在内循环,内循环从前到后遍历。求背包到达指定容量的排列方式数量?

2024-01-11 23:02:24 339

原创 01背包问题的变式

本题其实就是尽量让石头分成重量相同的两堆,相撞之后剩下的石头最小,这样就化解成01背包问题了。首先就是该背包中的物品有且只有一项,也就意味着无法重复往背包里加同一个物品。本题个人认为是一道hard的题目,作为中等题应该是因为题意比较好懂。如何递推,根据题意的要求是求指定容量下组合方式数量,那就是累加。做着一类题最先需要找到的是最大容量是多少?dp数组的下标表示容量,值表示最终的重量。这一题的关键在于容量有两个但是并不难找。注意一些剪枝操作避免出现报错。left就是最后的容量。递推公式的关键是加一。

2024-01-10 17:02:23 374

原创 二维数组与滚动数组解决背包问题

优化:大家有注意到每次只是使用了上一层的数据,那么其实可以将矩阵压缩成一层,但是有个问题得注意,我们是一直在操作同一个数组,如果依旧是从头再来的话,后面的结果是没法参考上一层的数据,因为都被这一层给覆盖掉了。所以从后往前遍历时唯一解,毕竟参考的数据是前面,只要从后面来即可。关于背包问题及其变式是我们在面试中经常遇见的问题,同时背包问题也是常见的动态规划问题。解决这类问题通常是走一步看一步,即利用数组来记录上一步的结论,再与当前进行比较。

2024-01-09 22:01:38 364

原创 动态规划整数划分,不同的二叉搜索树

这两题均为典型的动态规划,通过dp数组前面的项得到当前项。不同于斐波拉契的是这两题的递推公式将不再是前几项简单的相加相乘。而不同的二叉搜索树是前面所有情况累加在一起,这跟上一题一样要变历前n项来进行递推操作。其中整数划分要求最大值,这就意味着要遍历前n项所以比起斐波拉契多了一个for循环。对于数组初始化通常视情况而定,一般是前一项或前两项。题号:整数划分343,不同的二叉搜索树96。即使无法知道是前几项,只多不少一定不会错。

2024-01-08 13:54:28 331

原创 javascript的力扣131.分割回文串

比如分割回文串,复原ip地址,子集问题。这一类题只需抓住path增加时不再是填加一个元素,而是数组再展开。在力扣中有一类组合问题的变式,它要求返回的果实不再是每一个树层都是一个,而是前面的和。

2023-12-27 15:13:41 339

原创 组合总和剪枝以及树层去重

首先组合总和1并不难,只需要牢记在for循环的外面控制的是树层的横向移动,而for循环内则控制的是树枝的纵向移动。那么接下来就来详细分析如何控制,第一所有回溯问题都可以抽象为一课树结构,那么分析本题可知节点都有可能为“果实”。纵向移动使用for循环以及回溯,注意若sum大于则没必要再往下移动。本文分析力扣的39组合总和以及40组合总和2。

2023-12-27 14:24:57 351

原创 经典回溯算法 leetcode77组合

首先,任何使用回溯算法的题目本质上都是暴力求解。所以解此类题目,先使用暴力法分析题解。再使用递归栈来模拟多层的for循环,而回溯算法又是递归算法先使用递归三件套,再在递归的基础上进行回溯的关键操作(回溯算法的重难点!)也就是说回溯可以使用两个模版来确定算法最终的结果。接下来介绍一下回溯算法的模版。题目描述:给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按 任何顺序 返回答案。

2023-12-24 16:07:45 18

原创 javascript中二叉树的回溯与双指针

本题我们需要找一条符合条件的路径,而这个二叉树并不是搜索二叉树,只能采用穷举的方法,而穷举也是有技巧的,并不是一次一次从跟节点穷举,而是通过子节点返回的值判断穷举是否成功,否则就回溯。回溯虽然挺起来挺高大上的,其实在二叉树中大部分都是通过递归解决问题,而如果递归函数中有意义明确的返回值,基本上就会有回溯的过程,返回值:如果计数器归0说明穷举成功返回true,而既然子节点若返回true,那么父节点也即返回ture返回到顶层即可,若为false则返回false。确定递归函数的参数与返回类型。

2023-12-23 12:30:34 31 1

原创 关于any与unknow的区别

首先,大家可以想象一下如果父级一个更大的圈,而子级是一个更小的圈并且包含在父级之内,那么是不意味着子级内的所有数都合法,那么到了变量这一领域,如果一个变量a赋值给另一个变量b也就意味着a在b的圈内,b可以是a的父级,那么any与unknow是所有类的父类就意味着所有类可以赋值给他们两。:不能拿unknow类型的变量来获取任何属性和方法,但any类型的变量可以获取任意名称的属性和任意名称的方法(虽然不推荐)。:any也可以是任何类的子类,但unknow不可以,所以any类型的变量都可以赋值给其他类型的变量。

2023-12-21 19:13:27 41

原创 关于二叉树的所有遍历方式

首先我们要说明一下递归的三要素以二叉树来学习递归几乎是最好的学习递归方式;接下来我们来仔细阐述一下在二叉树中的这三个要素首先,要做到递归,第一步就是定义一个可以循环利用的函数,那么定义函数第一步除去起函数名就是确认传入条件,又因为是可循环的函数那么确认return返回条件也是必须的。那么一力扣二叉树为例,递归要传入谁呢,毫无疑问就是根节点root。那么可以得到以下函数。那么接下来是否要确定返回条件了呢,需要注意的是,我们所说的返回条件不一定是return,而应该是收获胜利的果实。

2023-12-17 17:28:31 34 1

原创 滑动窗口最大值

【代码】滑动窗口最大值。

2023-12-11 17:40:54 31 1

原创 逆波兰表达式求值

【代码】逆波兰表达式求值。

2023-12-10 20:33:49 27 1

原创 用栈实现队列, 用队列实现栈

【代码】用栈实现队列, 用队列实现栈。

2023-12-10 20:30:45 27 1

原创 翻转字符串,翻转前k字符

完整代码。

2023-12-09 19:18:45 21

原创 多个数组四数相加,赎金信

【代码】多个数组四数相加,赎金信。

2023-12-09 17:50:53 17

原创 有效的字母异位词,两个数组的交集,快乐数,两数之和

特别注意:6. 三个循环复制时不要搞混操作对象。

2023-12-08 23:24:51 16

原创 一行代码使用原生js清除空格

使用正则或split加join方法

2023-12-06 13:46:22 24 1

原创 两两交换链表中的的节点,删除链表的倒数第N个节点,环形链表2

【代码】两两交换链表中的的节点,删除链表的倒数第N个节点,环形链表2。

2023-12-03 17:22:38 16 1

原创 移除链表元素

6. 返回的是pre,而非current因为此时的current已经指向null。

2023-12-02 21:22:44 16

原创 有序数组的平方,长度最小的子数组,螺旋矩阵2

先说思路,因为是有序数组,所以最大值一定在头或尾,只需要比较头尾平方后的值,大的值放在新数组的尾部,尾部向头部前进一位,继续比较即可完整代码。

2023-12-02 15:36:25 17

原创 双指针,头尾二分法查找、双头快慢指针

头为0尾为数组长度-1对中间值与标签值进行比较,并不断缩小区间循环变量,注:因为是左闭右闭区间,所以右区间可以取到值,左区间就也可以取到合法值完整代码。

2023-12-02 14:21:34 22

原创 关于js中获取盒子宽高的api

【代码】关于js中获取盒子宽高的api。

2023-11-29 21:30:24 71 1

原创 JavaScript关于值引用,浅拷贝与深拷贝

深拷贝和浅拷贝的区别在于,浅拷贝对于数组和对象仅仅包含原始值时表现良好,但是数组和对象中嵌套其他数组和对象便不能正确拷贝。JavaScript 对象和数组如果深度嵌套,浅拷贝只能实现第一层的拷贝,但是深度的值依然和原对象共享引用。浅拷贝顾名思义就是拷贝的只有一层,多层会受影响(这个影响指的是修改数据时双方都会同步更新,无法真正的断开)我们希望的深拷贝是无论是嵌套多少层数组和对象,拷贝的数组、对象和原来的数组、对象互不受影响。由于js复杂数据类型使用的是堆内存,所以直接将复杂数据类型赋给变量就是值引用。

2023-08-08 15:34:31 23

原创 JavaScript时间对象如何一行代码转换为YYYY-MM-DD格式

话不多说,直接上代码。

2023-08-08 13:57:53 373

原创 关于JavaScript的隐式转换

哪些值会被转换为false(使用boolean)?null,undefined,0,[],‘’,NaN哪些值使用==会与false相等?0,‘’,‘ ’,[],[‘’],‘0’JavaScript中 0==null为何是false?为什么会出现这种反常结果,这是因为相等性检查 == 和普通比较符 > < >= <= 的代码并不是同一套。进行值的比较时,null 会被转化为数字,因此它被转化为了 0。这就是为什么 null >= 0 返回值是 true,null &g

2023-08-08 13:47:17 33

原创 关于操作Date对象

getDate()返回一个月中的某一天(1-31)注意单数不会自动补0getFullYear()从 Date 对象以四位数字返回年份。getMonth()从 Date 对象返回月份 (0 ~ 11)。特别注意使用的加一getTime()返回 1970 年 1 月 1 日至今的毫秒数。这个很有用毕竟毫秒数操作简单,可以用来轻易转化为各种时间格式,将毫秒数传入new Date()变成时间对象,再对其使用各种方法转换成想要的格式是前后端经常使用的方法。

2023-07-28 16:24:09 35 1

空空如也

空空如也

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

TA关注的人

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