尔嵘
愿你阳光下像个孩子,风雨里像个大人。
展开
-
LeeCode前端算法基础100题(21) 同构字符串
同构字符串是指两个字符串 s 和 t,它们的字符都可以被一一映射,即字符串 s 中的字符可以替换成字符串 t 中相应的字符,保持原有顺序。这个函数使用两个 Map 对象来维护字符的映射关系,遍历字符串 s 和 t 的字符,逐个检查字符的映射关系是否一致。每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。在示例中,字符串 "egg" 和 "add" 是同构的,所以函数返回。,那么这两个字符串是同构的。原创 2024-01-14 23:50:40 · 281 阅读 · 0 评论 -
LeeCode前端算法基础100题(20)找出字符串中第一个匹配项的下标
"leeto" 没有在 "leetcode" 中出现,所以返回 -1。中的第一个匹配项的下标。如果没有找到匹配项,则返回 -1。的值是 2,因为 "ll" 在 "hello" 中的下标是 2。字符串的第一个匹配项的下标(下标从 0 开始)。可以使用 JavaScript 中的。第一个匹配项的下标是 0 ,所以返回 0。方法来实现这个功能。"sad" 在下标 0 和 6 处匹配。原创 2024-01-14 23:47:01 · 157 阅读 · 0 评论 -
LeeCode前端算法基础100题(19)反转字符串中的单词
然后,它对每个单词进行反转,最后将反转后的单词数组合并成一个新的字符串。这个示例中,输入字符串 "Hello World" 会被反转为 "olleH dlroW"。中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。如果字符串在你使用的编程语言中是一种可变数据类型,请尝试使用。反转后的字符串中不能存在前导空格和尾随空格。中使用至少一个空格将字符串中的。原创 2024-01-14 23:39:57 · 184 阅读 · 0 评论 -
LeeCode前端算法基础100题(18)整数转罗马数字
采用贪心算法,通过比较当前整数与罗马数字的值,逐步减去最大可能的罗马数字,并将对应的罗马数字添加到结果字符串中。请注意,这个函数假定输入的整数在 1 到 3999 的有效范围内。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。同样地,数字 9 表示为。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做。,即为两个并列的 1。给你一个整数,将其转为罗马数字。例如, 罗马数字 2 写做。原创 2024-01-14 23:34:29 · 425 阅读 · 0 评论 -
LeeCode前端算法基础100题(17)- 罗马数字转整数
这个函数通过遍历罗马数字字符串,对每个字符进行转换并根据罗马数字规则计算整数值。请注意,这个函数假定输入的罗马数字是有效的。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。同样地,数字 9 表示为。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做。给定一个罗马数字,将其转换成整数。,即为两个并列的 1。原创 2024-01-14 23:31:03 · 161 阅读 · 0 评论 -
LeeCode前端算法基础100题(16)- 轮转数组
这是一个直观但可能需要额外空间的方法。我们可以先将数组的后。这种方法通过先反转整个数组,然后再反转前。向右轮转 1 步: [99,-1,-100,3]向右轮转 2 步: [3,99,-1,-100]个元素放入一个额外的数组,然后将前。个元素移动到新数组的相应位置。,将数组中的元素向右轮转。个元素,最后再反转后。解法1:使用额外的数组。原创 2024-01-08 14:02:46 · 485 阅读 · 0 评论 -
LeeCode前端算法基础100题(15)-最大子数组和
然后,遍历整个数组,找出所有状态中的最大值即为所求的最大和。,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。可以使用动态规划来解决这个问题。连续子数组 [4,-1,2,1] 的和最大,为 6。,并返回具有最大和的连续子数组的最大和。的解法,尝试使用更为精妙的。个元素结尾的子数组的最大和。是数组中的一个连续部分。如果你已经实现复杂度为。函数接受一个整数数组。原创 2023-12-22 14:28:13 · 472 阅读 · 0 评论 -
LeeCode前端算法基础100题(14)-寻找峰值
如果当前元素比其右邻居大,说明峰值可能在左侧,包括当前元素;否则,峰值可能在右侧,不包括当前元素。通过这样的选择,每次迭代都能将搜索范围缩小一半,从而实现 O(log n) 的时间复杂度。为了实现时间复杂度为 O(log n) 的算法来找到峰值元素,可以使用二分查找的思想。,找到峰值元素并返回其索引。或者返回索引 5, 其峰值元素为 6。3 是峰值元素,你的函数应该返回其索引 2。你的函数可以返回索引 1,其峰值元素为 2;峰值元素是指其值严格大于左右相邻值的元素。的算法来解决此问题。原创 2023-12-21 14:46:10 · 344 阅读 · 0 评论 -
LeeCode前端算法基础100题(13)-多数元素
这个算法的时间复杂度是 O(n),其中 n 是数组的长度。由于题目中已经保证多数元素一定存在,且出现次数大于 ⌊ n/2 ⌋,因此算法总是能够找到正确的结果。该算法的基本思想是通过不断消除不同的元素,最终找到数组中出现次数最多的元素。给定一个大小为 n 的数组 nums ,返回其中的多数元素。进阶:尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。输入:nums = [2,2,1,1,1,2,2]输入:nums = [3,2,3]原创 2023-12-19 14:14:50 · 422 阅读 · 0 评论 -
LeeCode前端算法基础100题(12)-删除有序数组中的重复项
这个算法的时间复杂度是 O(n),其中 n 是数组的长度。返回的新长度即为删除重复元素后的数组长度。解释:函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。解释:函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2。输入:nums = [0,0,1,1,1,2,2,3,3,4]输出:5, nums = [0,1,2,3,4]输出:2, nums = [1,2,_],返回删除后数组的新长度。输入:nums = [1,1,2]原创 2023-12-19 14:07:16 · 400 阅读 · 0 评论 -
LeeCode前端算法基础100题(11)-移除元素
这个算法的时间复杂度是 O(n),其中 n 是数组的长度。注意,元素的顺序可以改变,返回的新长度即为删除指定值后的数组长度。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。元素的顺序可以改变。方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。// 根据你的函数返回的长度, 它会打印出数组中。的元素,并返回移除后数组的新长度。原创 2023-12-19 14:03:29 · 391 阅读 · 1 评论 -
LeeCode前端算法基础100题(10)-合并两个有序数组
这个算法的时间复杂度是 O(m + n),其中 m 是 nums1 的长度,n 是 nums2 的长度。可以使用双指针的方法进行合并,从数组的末尾开始比较元素并将其放置到 nums1 的末尾。注意,因为 m = 0 ,所以 nums1 中没有元素。nums1 中仅存的 0 仅仅是为了确保合并结果可以顺利存放到 nums1 中。,5,6] ,其中斜体加粗标注的为 nums1 中的元素。需要合并 [1,2,3] 和 [2,5,6]。需要合并的数组是 [] 和 [1]。需要合并 [1] 和 []。原创 2023-12-19 13:44:49 · 330 阅读 · 0 评论 -
LeeCode前端算法基础100题(9)-寻找两个正序数组的中位数
合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5。合并数组 = [1,2,3] ,中位数 2。请你找出并返回这两个正序数组的。算法的时间复杂度应该为。的正序(从小到大)数组。原创 2023-12-19 13:40:04 · 337 阅读 · 0 评论 -
LeeCode前端算法基础100题(8)-买卖股票的最佳时机 III
随后,在第 7 天(股票价格 = 1)的时候买入,在第 8 天 (股票价格 = 4)的时候卖出,这笔交易所能获得利润 = 4-1 = 3。在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4。在第 4 天(股票价格 = 0)的时候买入,在第 6 天(股票价格 = 3)的时候卖出,这笔交易所能获得利润 = 3-0 = 3。你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。设计一个算法来计算你所能获取的最大利润原创 2023-12-14 10:21:02 · 181 阅读 · 0 评论 -
LeeCode前端算法基础100题(7)-电话号码的字母组合
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。的字符串,返回所有它能表示的字母组合。原创 2023-12-14 10:16:48 · 123 阅读 · 0 评论 -
LeeCode前端算法基础100题(6)-回文数
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。原创 2023-12-01 11:26:14 · 347 阅读 · 0 评论 -
LeeCode前端算法基础100题(5)- 最长公共前缀
作为参数,并返回这些字符串的最长公共前缀。它通过逐个比较字符串的字符来找到最长公共前缀。首先,将第一个字符串作为初始前缀。然后,依次遍历数组中的每个字符串,如果当前字符串不以前缀开头,则将前缀缩短一个字符,直到找到最长公共前缀或前缀为空字符串。编写一个函数来查找字符串数组中的最长公共前缀。这个函数接受一个字符串数组。如果不存在公共前缀,返回空字符串。在上述示例中,输入的字符串数组。中的最长公共前缀是 "fl"。原创 2023-12-01 11:12:02 · 216 阅读 · 0 评论 -
LeeCode前端算法基础100题(4)- 无重复字符的最长子串
请你找出其中不含有重复字符的。请注意,你的答案必须是。因为无重复字符的最长子串是。因为无重复字符的最长子串是。因为无重复字符的最长子串是。,所以其长度为 3。,所以其长度为 1。,所以其长度为 3。原创 2023-11-23 14:51:19 · 117 阅读 · 0 评论 -
LeeCode前端算法基础100题(3)- N皇后
按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。的棋盘上,并且使皇后彼此之间不能相互攻击。如上图所示,4 皇后问题存在两个不同的解法。每一种解法包含一个不同的。的棋子放置方案,该方案中。分别代表了皇后和空位。原创 2023-11-23 14:36:31 · 128 阅读 · 0 评论 -
LeeCode前端算法基础100题(2)- 最多水的容器
找出其中的两条线,使得它们与。返回容器可以储存的最大水量。轴共同构成的容器可以容纳最多的水。原创 2023-11-23 14:31:16 · 220 阅读 · 0 评论 -
LeeCode前端算法基础100题(1)-两数之和
一、问题详情:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以想出一个时间复杂度小于 O(n2) 的算法吗?二、我的答案:/** * @param {number[]} nums * @param {number} target * @return {number[]} */var twoSum = function(nums, target) { let arr = []原创 2021-07-12 17:05:04 · 269 阅读 · 2 评论