自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【git】变更分支与主干未同步

在Git中,当你的变支与主干(通常是master或main分支)未同步时,你需要通过以下步骤来进行同步操作。假设你的变更分支名为。打开发生冲突的文件并根据需要进行编辑,以解决冲突。如果你想避免手动合并,还可以用。,这样会将你的变更应用到最新的。,以防止意外覆盖其他人的更改。分支,确保它与远程仓库同步。首先,确认你当前处于。

2024-08-02 10:09:06 407

原创 Taro之View和Block

Block:用于仅在逻辑上分组,不产生额外的 DOM 元素,不支持样式。View:用于需要实际 DOM 元素以应用样式和布局的场景,支持所有常规样式。

2024-07-31 16:58:09 435

原创 【CSS】让文字垂直居中的方法

推荐使用 Flexbox 或 CSS Grid 的方法,这两种方法不仅简单易用,而且兼容性好,适用于各种场景。方法也可以在简单的单行文本垂直居中效果中使用。如果你更加灵活地调整,你可能需要结合多个方法。通过这些方法,你可以确保文本在容器中垂直居中,并且在不同的设备和分辨率下都能保持良好的显示效果。

2024-07-31 16:33:26 1361

原创 JS之数组中的reduce方法

reduce是一个功能非常强大的高阶函数,可以用来解决各种数组操作和数据处理问题。通过理解它的工作原理和灵活运用 callback 函数,你可以编写出简洁高效且具有高度表达力的代码。

2024-07-16 17:43:27 980

原创 decimal.js库

decimal.js是一个非常强大的库,用于高精度十进制运算。它解决了 JavaScript 中关于浮点数精度问题的常见问题,特别适用于对精度要求高的场景,比如金融计算、科学计算等。

2024-07-16 17:16:20 904

原创 decimal.js库和bignumber.js库的比较,如何选择?

和decimal.js都是解决 JavaScript 高精度计算问题的优秀库,各有优劣。选择适合你的项目需求的库可以帮助你更好地解决浮点数精度问题,提高代码的可靠性和准确性。在需要复杂数学运算的场景下,decimal.js显得更为合适;在注重性能和包体积的场景下,则是更好的选择。

2024-07-16 17:14:51 575

原创 JS之为什么0.1+0.2不等于0.3

在实际开发中,需要格外注意浮点数的运算误差,可以使用适当的方法来规避这些问题。要理解这个问题,我们需要了解浮点数的表示方式以及计算机内部的运算原理。为了解决 JavaScript 中的精度问题,有许多第三方库可以进行精确的十进制运算。当比较两个浮点数时,可以设置一个小的容差值来判断它们是否足够接近。计算机在进行加法运算时,将这两个近似值相加,结果并不会是确切的。的二进制表示都不是完全准确的,而是某个最接近的近似值。正如前面解释的,加法运算的结果并不是精确的。,而是一个近似的值,可能是。

2024-07-16 16:58:18 593

原创 bignumber.js库,解决前端小数精度问题

/ 创建 BigNumber 实例// 实际在前端中0.1+0.2 是不等于0.3的,原因是前端的浮点数无法精确的表示小数// 加法${// 创建 BigNumber 实例 const x = new BigNumber(0.1);// 实际在前端中0.1+0.2 是不等于0.3的,原因是前端的浮点数无法精确的表示小数 // 加法 const sum = x . plus(y);// "Sum: 0.3" // 减法 const difference = x . minus(y)

2024-07-16 16:51:54 515

原创 前端常用工具库

开发常用的开源库

2024-07-16 16:42:31 262

原创 JS之短路操作符

短路操作符(Short-circuit Operator)是 JavaScript 中的一个概念,这些操作符同样适用于 TypeScript,因为 TypeScript 是 JavaScript 的类型超集。短路操作符主要包括逻辑“与”(&&)和逻辑“或”(||),以及空值合并操作符(??),它们的行为在 JavaScript 和 TypeScript 中是一致的。以前只认为与和或只能用来协助判断是ture还是false,即if(a || b)的用法,但是还可以有更多的用法,如协助赋值给a。

2024-07-16 14:40:03 569

原创 JS之函数的属性

/ 添加自定义属性// 输出: "This function adds two numbers"// 输出: "1.0.0"JavaScript 函数不仅仅是可调用的代码块,它们也是对象,具备一些特殊的内建属性如lengthnameprototype以及可以自定义的属性。这些属性使得函数在 JavaScript 中更加灵活和强大,允许开发者以面向对象的方式处理函数行为和状态。理解这些属性,有助于更有效地编写和使用函数。

2024-07-16 11:45:47 430

原创 JS之在函数中返回匿名函数的用法

在JavaScript中,函数可以以多种方式返回匿名函数,无论是使用传统函数、箭头函数、对象方法还是高阶函数。

2024-07-16 11:35:54 216

原创 JS中对象的方括号[]和点.【对象属性的访问和设置】

在 JavaScript 中,可以使用多种方式来访问和设置对象的属性, 包括点表示法和方括号表示法。点表示法和方括号表示法点表示法:使用点号(.)来访问或设置对象的属性。方括号表示法:使用方括号([])来访问或设置对象的属性。这两种方法基本上是等价的,然而在某些情况下,方括号表示法能够提供更多的灵活性,例如属性名是变量或包含特殊字符的情况。示例代码解释const s = {};s['name'] = 'john';s.name = 'bob';这段代码执行了以下操作:创建对象

2024-07-16 10:57:17 369

原创 forEach和map的区别

都是 JavaScript 数组上常用的高阶函数,用于迭代数组中的元素。尽管它们的语法和操作方式有些相似,但功能和用例却有所不同。

2024-07-16 10:37:30 425

原创 代码耦合是什么?

代码耦合度高指的是什么?为什么要降低代码的耦合度,如何降低代码的耦合度

2024-07-15 16:49:40 582

原创 为什么项目的目录结构要分层?是什么思想引导着项目的分层结构的?一般的前端项目目录结构是怎么分层的?

项目的分层结构

2024-07-15 16:43:03 358

原创 【算法、动态规划】滑动窗口专项训练

滑动窗口特训

2024-07-15 16:36:01 416

原创 代码随想录算法训练营第30天|回溯

写了好长时间,最后超时了qaq。

2024-06-07 18:48:33 274 1

原创 代码随想录算法训练营第29天|回溯

这里的去重逻辑很巧妙。枝条是迭代选择下去的。

2024-06-07 16:04:45 293

原创 代码随想录算法训练营第28天|回溯

调试了两次,第一是是边界值cn没有弄正确,如果初始取1的话,只有在等于5的时候才会退出,下面这个是改过了,初始取0。组合问题(分割问题)

2024-06-07 11:36:34 273

原创 代码随想录算法训练营第27天|回溯

用一个used数组来判断当前是的树枝还是在数层,然后再来判断是否要选取当前元素。如果无法理解,最好自己画个简单案例的树形图。怎么去设定参数很重要。

2024-06-06 23:11:15 349

原创 代码随想录算法训练营第25天|回溯

【代码】代码随想录算法训练营第25天|回溯。

2024-06-06 15:04:21 451

原创 代码随想录算法训练营第24天|回溯

【代码】代码随想录算法训练营第24天|二叉树。

2024-06-06 13:42:13 204

原创 代码随想录算法训练营第23天|二叉树

思路:从有序数组中选择中间的值作为根节点,来分割左右子树,一次迭代创建。

2024-06-05 23:35:23 231

原创 代码随想录算法训练营第22天|二叉树

前序,利用二叉搜索的特性。

2024-06-05 18:04:46 374

原创 代码随想录算法训练营第21天|二叉树

所有拿到BST的中序遍历结果,由于在BST中中序是升序的,在升序中就能找到最小值。有点难向,想到了用后序遍历,但是自己想的时候理不清回溯的逻辑。注意这里说的是任意两个节点,而不一定要是父子节点之间。

2024-06-05 16:52:28 315

原创 代码随想录算法训练营第20天|二叉树

思路和由中后序列构建树的思路是一样的,只不过这里不是通过后序的最后一个数来进行分割,而是通过找最大值进行分割左右子树。这里的return node不能到最后才去return,一定在某一个条件里面马上return了。要清楚的特性是对于BST来说,起中序遍历的数组一定是一个升序数组。这道题有陷阱的,子树是BST,不代表这个树一定是BST。迭代找出左子树和右子树的的边界,返回当前节点就行了。

2024-06-05 01:04:07 248 1

原创 代码随想录算法训练营第18天|二叉树

2.必须考虑是最底层,所以要考虑树的深度。能过,但是会超内存,之后在改进吧。3.同样的深度考虑左子树。1.只能是叶子结点,考虑迭代法,层序遍历。

2024-06-04 23:59:47 303

原创 代码随想录算法训练营第17天|二叉树

这种开销太大了,最好是能够在获得子树高的递归中同时判断子树是否平衡,但是我纠结的是递归的输出是布尔类型,而不是数字类型,怎么在迭代子树是否平衡时计算子树的高度呢(迭代可以计算,但是我想不通的是怎么返回)参考了代码随想录,解决办法就是改变函数的输出,把迭代函数主体看作是计算子树高度的迭代,并在计算时顺便判断子树是否平衡,如果不平衡的话直接输出-1,平衡就正常输出子树的高数。

2024-06-04 21:26:02 262

原创 代码随想录算法训练营第16天|二叉树

树的最大深度就是根节点的高度,使用后序遍历从叶子结点开始,从叶子结点往根节点走,使用后序遍历就可以实现从子节点到根节点的操作。易错点在于深度指的是从叶子节点到根的距离,如果左右孩子之间,只有一个为空的话,那么这个空子树就会返回0,如果直接。但是前面取最大深度就不有有这样的问题,因为取最大深度时取到的一定是叶子结点的值。,就会取到0,但是这样的取法是不对的,只有左右孩子都为空才能算叶子结点。利用完全二叉树的特点。

2024-06-04 19:58:11 424

原创 代码随想录算法训练营第15天|二叉树

用途for...of:用于遍历可迭代对象,获取每个元素的值。for...in:用于遍历对象的可枚举属性,获取每个属性名。适用对象for...of:数组、字符串、Map、Set 等等。for...in:对象及其原型链上的可枚举属性。返回值for...of:返回可迭代对象的值。for...in:返回对象的属性名。

2024-06-04 18:50:29 683

原创 代码随想录算法训练营第40天|整数拆分、不同的二叉搜索树

关键点在于只能向下走或者向右走,所以x和y都智能递增,是不可能回头的,所以对于边缘d[x][1]和d[1][y]都应该初始化为1;机器人试图达到网格的右下角(在下图中标记为 “Finish” )。用dfs,会超时,时间复杂度会达到2^(m+n)次,所以不合适,但是思路是可行的,如果m和n较小的话。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。d[x][y]表示从start开始到点(x,y)有d[x][y]种走法。网格的左上角 (起始点在下图中标记为 “Start” )。

2024-05-25 11:17:57 483

原创 代码随想录算法训练营第39天|不同路径、不同路径II

关键点在于只能向下走或者向右走,所以x和y都智能递增,是不可能回头的,所以对于边缘d[x][1]和d[1][y]都应该初始化为1;机器人试图达到网格的右下角(在下图中标记为 “Finish” )。用dfs,会超时,时间复杂度会达到2^(m+n)次,所以不合适,但是思路是可行的,如果m和n较小的话。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。d[x][y]表示从start开始到点(x,y)有d[x][y]种走法。网格的左上角 (起始点在下图中标记为 “Start” )。

2024-05-17 18:00:25 413

原创 代码随想录算法训练营第38天|509. 斐波那契数 、70. 爬楼梯 、 746. 使用最小花费爬楼梯

下面的代码是我第一个自己思考的代码,是错误的,一开始想的是想的是比如想要到第4阶,有可能是dp[1] + dp[3], dp[2]+ dp[2], dp[3] + dp[1];但是如果这样想的话,所有种类中是会有重复值的。可以想到,这样递归出来的种类数其实是很干净的,不会存在重复值,因为不同于我第一次的想法,我第一次想的是(**step1:**从0-k有几种方法;在前面知识的基础上,我大概能了解到迈上第n阶的方法其实是有前面的迈上n-1和迈上n-2阶的种数有关的,但是如果没有关键点的想,很容易想岔去。

2024-05-17 16:42:09 1865

原创 代码随想录算法训练营第14天|二叉树的前序、中序、后序遍历【递归法、迭代法】

Problem:前序:中左右!

2024-04-24 14:22:46 201

原创 代码随想录算法训练营第13天|239. 滑动窗口最大值、347.前 K 个高频元素

单调队列是一种特殊的队列,它在添加新元素的同时保持队列中元素的单调递增或递减顺序。我认为的难点在与map的比较很难,最后的写法是自己定义了一个比较器,注意map中的每一个元素的结构其实都是一个pair,如果在比较器里面写map,这个比较器就会比较不同map之间,而不是同一个map的pair。这个单调队列在添加新元素时,会从队尾开始移除所有小于新元素的值,以保持队列的单调递增性。如果优先队列中的元素是int,是不需要写比较器的,默认的排序是大顶堆,如果像实现小顶堆,可以这样定义。只要注意,是反着来的就行了。

2024-04-24 11:56:53 258

原创 代码随想录算法训练营第11天|20.有效的括号【栈】、1047. 删除字符串中的所有相邻重复项【栈】、150. 逆波兰表达式求值【栈】

思路是,当栈为空时,向栈中压入字符,当栈非空时,判断当前遍历的字符是否与栈顶字符相等(因为这时的栈顶字符和当前遍历的字符就是相邻的字符),相等就删除栈顶(删除相邻的相等字符),不想等就直接入栈。栈:从后向前遍历s,是为了让越靠前的字符靠近栈顶,越往后的的字符靠近栈底(所以后面的字符先入栈)栈可以用于不同类型的数学表达式之间的转换,特别是在将中缀表达式转换为前缀或后缀表达式时。在编程语言的实现中,栈用于跟踪函数调用和局部变量的作用域。在图和树的深度优先搜索中,栈用于跟踪待探索的顶点。

2024-04-17 14:45:25 271

原创 代码随想录算法训练营第10天|232. 用栈实现队列【栈】、225. 用队列实现栈【队列】

但是想删除队列的队尾元素,只能遍历到队列的队尾去删除。但是队列中是没有迭代器去遍历的,只能用队列b暂存队列a的除队尾以外的其他元素,之后在将队列b的元素依次压入队列a中即可。在pop的时候,不需要在把栈B的元素压回道栈A,如果是pop,只要栈B非空,就从栈B的pop输出,如果栈B为空,就将栈A的元素压入到栈B,再从栈B.pop。pop:从栈A取出元素,依次压入栈B,当栈A为空时,栈B的top元素即位队列的首元素,压出栈B的top元素,并从栈B取出元素,依次压回栈A。的基础,足以处理大多数与栈相关的问题。

2024-04-17 11:16:39 1698

原创 代码随想录算法训练营第9天|28. 找出字符串中第一个匹配项的下标【KMP字符串匹配】、459.重复的子字符串【有问题,需要改进】

遍历被匹配的长串,cur指向模式串。整体后移前缀数组(从后向前移动)构建前缀数组next。

2024-04-13 01:41:27 199 1

原创 代码随想录算法训练营第8天 |344. 反转字符串、541. 反转字符串、54. 替换数字、55. 右旋字符串

方法二:使用双指针指针从后往前操作:大多数组填充类的问题,其做法都是先预先给数组扩容带填充后的大小,然后在从后向前进行操作。例如,对于输入字符串 “abcdefg” 和整数 2,函数应该将其转换为 “fgabcde”。下面是一些示例代码,演示了如何在C++中使用。一开始不想用reverse,花了一些时间。方法一:使用额外的辅助空间,字符处理。翻转字符,交换 l/2次即可。方法一:使用额外的辅助空间。

2024-04-10 13:41:37 525 1

空空如也

空空如也

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

TA关注的人

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