- 博客(447)
- 资源 (2)
- 收藏
- 关注
原创 【算法】有效的字母异位词
针对字母异位词的问题,还有一种较为直观且高效的解法,那就是使用哈希映射(在 JavaScript 中通常是对象或 Map)。要判断两个字符串s和t是否是字母异位词,核心思想是检查两个字符串中每个字符出现的次数是否完全相同。要判断两个字符串s和t是否是字母异位词,核心思想是检查两个字符串中每个字符出现的次数是否完全相同。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
2024-08-13 23:05:06
417
原创 【前端手写代码】手写instanceof方法
instanceof运算符用于判断构造函数的prototype属性是否出现在对象的原型链中的任何位置。
2024-07-30 09:32:33
375
原创 【算法】字符串的排列
难度:中等给你两个字符串 s1 和 s2 ,写一个函数来判断 s2 是否包含 s1 的排列。如果是,返回 true;否则,返回 false。换句话说,s1 的排列之一是 s2 的 子串。
2024-07-10 14:04:38
524
原创 【算法】验证回文串
如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串。字母和数字都属于字母数字字符。给你一个字符串 s,如果它是 回文串 ,返回 true;否则,返回 false。示例 1:输入: s = “A man, a plan, a canal: Panama”输出:true解释:“amanaplanacanalpanama” 是回文串。示例 2:输入:s = “race a car”输出:false。
2024-07-07 20:44:17
313
原创 【算法】柱状图中最大的矩形
单调栈法之所以被想到,是因为它能够高效地处理当前柱子与其左右两边柱子高度的比较关系,利用栈的特性(后进先出)来快速确定每个柱子作为矩形高度时的左右边界。这种方法特别适合处理与顺序相关且需要快速检索“最近的特定条件”的问题。给定 n 个非负整数,用来表示柱状图中各个柱子的高度。输入:heights = [2,1,5,6,2,3]求在该柱状图中,能够勾勒出来的矩形的最大面积。解释:最大的矩形为图中红色区域,面积为 10。解释:最大的矩形为图中红色区域,面积为 4。输入:heights = [2,4]
2024-07-06 23:21:18
384
原创 【JavaScript】具有 iterable 接口的数据结构
在这个例子中,iterableObj 对象实现了 Symbol.iterator 方法,返回一个迭代器对象,通过 for…of 循环遍历时,依次输出迭代器返回的值。因此,具有 iterable 接口的数据结构是指支持迭代器协议,可以通过 for…of 循环或其他遍历方法遍历其成员的数据结构。在 JavaScript 中,具有 iterable 接口的数据结构包括。这些数据结构可以使用。循环进行遍历,也可以通过。迭代器对象需要包含一个。的方法,该方法返回一个。方法都会返回一个包含。
2024-07-06 16:14:21
365
原创 【JavaScript】浅拷贝与深拷贝
对象浅拷贝与深拷贝是我们经常在项目开发中遇到的问题。那怎么更好的实现呢?在JavaScript中,浅拷贝(shallow copy)和深拷贝(deep copy)是处理对象和数组拷贝时经常遇到的概念。它们主要区别在于的处理方式。
2024-07-06 12:47:20
1135
原创 【算法】有效的括号
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。示例 1:输入:s = “()”输出:true示例 2:输入:s = “()[]{}”输出:true示例 3:输入:s = “(]”输出:false提示:s 仅由括号 ‘()[]{}’ 组成。
2024-07-04 23:20:01
191
原创 【算法】最长连续序列
给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。示例 1:输入:nums = [100,4,200,1,3,2]输出:4解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。示例 2:输入:nums = [0,3,7,2,5,8,4,6,0,1]输出:9提示:我们做算法题的时候,一定先审好题:题目要求找出(不要求序列元素在原数组中的连续)的长度。
2024-07-03 11:45:23
379
原创 【算法】字母异位词分组
通过先把字符串转成数组,再进行排序,然后再转成字符串。如果是字符包含的字母相同,则最后得到转化之后的字符串都是一样的,接着再进行比较,这样复杂度降低了,逻辑更清晰了。
2024-07-02 21:43:52
423
原创 【算法】三数之和
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!= k ,同时还满足 nums[i] + nums[j] + nums[k] == 0。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]输入:nums = [0,1,1]输入:nums = [0,0,0]解释:唯一可能的三元组和为 0。输出:[[0,0,0]]
2024-06-30 23:02:29
221
原创 【算法】两数之和
最简单的方法是通过两层for循环进行遍历, 使用暴力的查找两个子元素。但是这种方法的时间复杂度为O(n^2)。通过HashMap我们可以将时间复杂度降为O(2n)。给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。给定 nums = [2, 7, 11, 15], target = 9。因为 nums[0] + nums[1] = 2 + 7 = 9。
2024-06-29 16:49:15
219
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人