![](https://i-blog.csdnimg.cn/direct/088d1f484cb04678b948307ee0d41382.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法
文章平均质量分 65
前端算法的相关总结
时清云
自强不息,厚德载物;日拱一卒,功不唐捐;海纳百川,有容乃大。这世上没有最强的人,只有想变强的人,做一个简单真实的自己。
展开
-
【算法】除自身以外数组的乘积
难度:中等。原创 2024-08-18 22:12:03 · 247 阅读 · 0 评论 -
【算法】有效的字母异位词
针对字母异位词的问题,还有一种较为直观且高效的解法,那就是使用哈希映射(在 JavaScript 中通常是对象或 Map)。要判断两个字符串s和t是否是字母异位词,核心思想是检查两个字符串中每个字符出现的次数是否完全相同。要判断两个字符串s和t是否是字母异位词,核心思想是检查两个字符串中每个字符出现的次数是否完全相同。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。原创 2024-08-13 23:05:06 · 319 阅读 · 0 评论 -
【算法】山脉数组的峰顶索引
难度:中等。原创 2024-08-06 22:29:17 · 200 阅读 · 0 评论 -
【算法】在排序数组中查找元素的第一个和最后一个位置
难度:中等。原创 2024-08-02 09:31:34 · 157 阅读 · 0 评论 -
【算法】搜索插入位置
难度:简单。原创 2024-08-01 10:08:11 · 424 阅读 · 0 评论 -
【算法】二分查找
难度:简单。原创 2024-08-01 09:05:38 · 313 阅读 · 0 评论 -
【算法】课程表
难度:中等。原创 2024-07-28 21:34:00 · 42 阅读 · 0 评论 -
【算法】岛屿数量
难度:中等。原创 2024-07-27 22:02:12 · 373 阅读 · 0 评论 -
【算法】合并区间
难度:中等。原创 2024-07-26 21:58:13 · 99 阅读 · 0 评论 -
【算法】插入区间
难度:中等。原创 2024-07-25 23:07:27 · 412 阅读 · 0 评论 -
【算法】分割回文串
难度:中等。原创 2024-07-24 22:46:47 · 444 阅读 · 0 评论 -
【算法】子集II
递归函数需要接收当前子集、当前遍历到的数组下标以及上一个被选中元素的下标作为参数。3、原创 2024-07-23 17:58:48 · 519 阅读 · 0 评论 -
【算法】子集
难度:中等。原创 2024-07-22 22:47:14 · 260 阅读 · 0 评论 -
【算法】有效的括号字符串
难度:中等。原创 2024-07-21 16:09:16 · 413 阅读 · 0 评论 -
【算法】跳跃游戏II
难度:中等。原创 2024-07-20 22:22:16 · 445 阅读 · 2 评论 -
【算法】跳跃游戏
难度:中等。原创 2024-07-19 23:11:48 · 428 阅读 · 0 评论 -
【算法】数组中的第K个最大元素
难度:中等。原创 2024-07-18 23:01:05 · 252 阅读 · 0 评论 -
【算法】 数据流中的第 K 大元素
难度:简单。原创 2024-07-17 23:49:06 · 318 阅读 · 0 评论 -
【算法】LRU缓存
难度:中等。原创 2024-07-16 18:36:49 · 874 阅读 · 0 评论 -
【算法】二叉树的层序遍历
难度:中等。原创 2024-07-15 23:30:18 · 345 阅读 · 0 评论 -
【算法】验证二叉搜索树
难度:中等。原创 2024-07-14 21:56:01 · 345 阅读 · 0 评论 -
【算法】平衡二叉树
难度:简单。原创 2024-07-13 23:05:26 · 995 阅读 · 0 评论 -
【算法】删除链表的倒数第 N 个结点
难度:中等。原创 2024-07-12 22:43:01 · 392 阅读 · 0 评论 -
【算法】反转链表
难度:简单。原创 2024-07-11 22:37:50 · 368 阅读 · 0 评论 -
【算法】字符串的排列
难度:中等给你两个字符串 s1 和 s2 ,写一个函数来判断 s2 是否包含 s1 的排列。如果是,返回 true;否则,返回 false。换句话说,s1 的排列之一是 s2 的 子串。原创 2024-07-10 14:04:38 · 466 阅读 · 0 评论 -
【算法】无重复字符的最长子串
难度:中等。原创 2024-07-09 16:00:46 · 330 阅读 · 0 评论 -
【算法】买卖股票的最佳时机
使用滑动窗口来解题难度:简单。原创 2024-07-09 11:19:55 · 352 阅读 · 0 评论 -
【算法】接雨水
难度:困难。原创 2024-07-08 23:40:20 · 518 阅读 · 0 评论 -
【算法】验证回文串
如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串。字母和数字都属于字母数字字符。给你一个字符串 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 · 278 阅读 · 0 评论 -
【算法】柱状图中最大的矩形
单调栈法之所以被想到,是因为它能够高效地处理当前柱子与其左右两边柱子高度的比较关系,利用栈的特性(后进先出)来快速确定每个柱子作为矩形高度时的左右边界。这种方法特别适合处理与顺序相关且需要快速检索“最近的特定条件”的问题。给定 n 个非负整数,用来表示柱状图中各个柱子的高度。输入:heights = [2,1,5,6,2,3]求在该柱状图中,能够勾勒出来的矩形的最大面积。解释:最大的矩形为图中红色区域,面积为 10。解释:最大的矩形为图中红色区域,面积为 4。输入:heights = [2,4]原创 2024-07-06 23:21:18 · 316 阅读 · 0 评论 -
【算法】逆波兰表达式求值
遍历结束后,栈中只剩下一个元素,即为表达式的计算结果。5、原创 2024-07-05 22:42:04 · 535 阅读 · 0 评论 -
【算法】有效的括号
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。示例 1:输入:s = “()”输出:true示例 2:输入:s = “()[]{}”输出:true示例 3:输入:s = “(]”输出:false提示:s 仅由括号 ‘()[]{}’ 组成。原创 2024-07-04 23:20:01 · 157 阅读 · 0 评论 -
【算法】最长连续序列
给定一个未排序的整数数组 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 · 320 阅读 · 0 评论 -
【算法】字母异位词分组
通过先把字符串转成数组,再进行排序,然后再转成字符串。如果是字符包含的字母相同,则最后得到转化之后的字符串都是一样的,接着再进行比较,这样复杂度降低了,逻辑更清晰了。原创 2024-07-02 21:43:52 · 365 阅读 · 0 评论 -
【算法】三数之和
给你一个整数数组 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 · 191 阅读 · 0 评论 -
【算法】两数之和
最简单的方法是通过两层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 · 187 阅读 · 0 评论 -
【算法】最接近的三数之和
本文讨论的是一类常见的算法问题——在给定的数组中找到三个数,使得这三个数的和最接近目标值。这类问题属于数组处理和优化搜索问题,特别是当我们需要从多个数中选择一部分组合,以满足某种准则时,此类方法特别适用。**解决这个问题的算法是排序加双指针法。**这个算法非常适合用于解决数组中的两数或三数之和问题,尤其是当数组较大时,能够有效减少不必要的计算,避免暴力枚举的高时间复杂度。双指针法的基本思想是通过对数组的排序,然后利用数组的有序性,通过左右指针向中间移动的方式,来快速定位和调整数值,以找到最优解。原创 2024-03-22 14:25:57 · 102 阅读 · 0 评论 -
【算法】 使用最小花费爬楼梯
给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。请你计算并返回达到楼梯顶部的最低花费。示例 1:输入:cost = [10,15,20]输出:15解释:你将从下标为 1 的台阶开始。输入:cost = [1,100,1,1,1,100,1,1,100,1]输出:6解释:你将从下标为 0 的台阶开始。原创 2024-03-12 17:52:59 · 74 阅读 · 0 评论 -
【算法】 爬楼梯
首先题目中说每次你可以爬 1 或 2 个台阶,1、那么我们可以这样理解,总共有n个台阶,那么我们爬到n个台阶的前一步是在n-1或者n-2台阶上,为什么会这样说呢,因为每次只能爬1或者2个台阶,所以到达n个台阶的前一步要么是爬了1个台阶到达n的,要么是爬了2个达到n的。所以到达n个台阶的总方法是到达n-1的总方法+到达n-2的总方法;原创 2024-03-08 17:15:03 · 28 阅读 · 0 评论 -
【算法】课程表
你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] = [ai, bi] ,表示如果要学习课程 ai 则 必须 先学习课程 bi 。例如,先修课程对 [0, 1] 表示:想要学习课程 0 ,你需要先完成课程 1 。请你判断是否可能完成所有课程的学习?如果可以,返回 true ;否则,返回 false 。示例 1:输入:numCours原创 2024-03-06 19:59:37 · 11 阅读 · 0 评论