Javascript数据结构与算法
文章平均质量分 88
FE_Jinger
优快云 前端领域优质创作者
曾在得物APP-前端平台-投放&增长部门 实习
Front_End job-hunting
祝好运!!!快来一个Offer吧,泡麻啦~
个人网站versionI:http://47.97.209.196:80,
Gitee:https://gitee.com/gisjinger
Jinger励志成为大中厂的一名会后端会GIS会AI的前端工程师
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Javascript算法——动态规划(中)
股票买卖(一):贪心(二)只有一股挣最多(贪心)(三)零钱兑换(★)Ⅲ打家劫舍()(二)编辑距离(★)最长公共子序列/子串最长公共子序列最长公共子串回文子串&回文子序列(★★)1.最长回文子串2.回文子串数量3最长回文子序列最长递增子序列/递增连续子序列(★★★)递增连续递增原创 2025-05-03 09:00:00 · 752 阅读 · 0 评论 -
前端算法Hot 100 _二分查找
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。计算数组中逆序对的总数。逆序对定义为:对于数组中的第 i 个和第 j 个元素,如果满足 i < j 且 a[i] > a[j],则为一个逆序对。• 当左半部分元素大于右半部分元素时,逆序对数量增加左半部分剩余元素个数。step 1:二分查找首先从数组首尾开始,每次取中间值,直到首尾相遇。思路:中间值与右侧值比(右侧为旋转后的数据,小于左侧)原创 2025-04-24 16:36:35 · 406 阅读 · 0 评论 -
牛客算法题目刷——链表总结
1.首先时反转链表,简单是简单,但总是写错!2.在链表指定区间进行反转3.k个为一组进行反转(★★★)4.合并两个排序的链表(基础)5.合并k个已排序的链表(★)6.判断是否有环7.链表中环的入口结点8.删除倒数第n个节点9.链表相加10 单链表排序(★)11.回文链表12.链表的奇偶重排13.删除有序链表中的重复元素原创 2025-04-22 17:23:54 · 639 阅读 · 0 评论 -
牛客前端手撕题目详解
组件规则示例协议支持5种协议或无协议https://、空域名多级子域名(可含连字符)顶级域名2-6字母.com.org端口可选数字端口:8080路径任意字符路径(宽松模式)查询参数任意参数内容?id=123锚点任意锚点内容#section1。原创 2025-04-11 14:19:35 · 699 阅读 · 0 评论 -
前端算法实战:大小堆原理与应用详解(React中优先队列实现|求前K个最大数/高频元素)
堆的本质:通过树形结构维护元素间的序关系前端应用价值• 处理海量数据时优化内存使用• 实现高效的任务调度机制学习建议• 手写堆实现加深理解• 练习LeetCode相关题目培养算法思维扩展思考:如何用堆优化虚拟列表的渲染性能?欢迎在评论区讨论!本文代码已通过 LeetCode 测试用例验证,完整实现可访问我的GitHub 仓库获取。原创 2025-04-03 21:51:02 · 1215 阅读 · 0 评论 -
[Javascript算法]KMP算法&&滑块窗口
KMP算法通过预处理和智能指针调整,显著提升了字符串匹配效率,尤其适用于大规模文本和生物信息学领域。其核心思想“避免回溯”可扩展至多种优化场景,但需结合具体需求权衡预处理成本和匹配性能。“找到字符串中所有字母异位词”是指在给定字符串s中,找出所有与另一个字符串p字符组成完全相同(包含相同字符且出现次数一致,但顺序可以不同)的连续子串,并返回这些子串的起始索引。原创 2025-04-01 11:39:49 · 886 阅读 · 0 评论 -
【数据结构】二叉树总结篇
二叉树是一种树形数据结构,其中每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树常用于实现数据结构如堆、二叉搜索树等,以及算法如快速排序、表达式树等。原创 2025-03-04 09:16:18 · 414 阅读 · 0 评论 -
Javascript排序算法(冒泡排序、快速排序、选择排序、堆排序、插入排序、希尔排序)详解
排序算法是计算机科学中的基础,用于将一组数据按照某种顺序重新排列。JavaScript中常见的排序算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序等。原创 2025-02-22 15:31:57 · 1667 阅读 · 0 评论 -
Javascript动态规划算法——背包问题(01背包)
01 背包问题的动态规划解法通过递推和状态转移来逐步计算每个可能的背包容量下的最大价值。通过优化空间复杂度,我们能够有效地使用一维数组来存储当前状态,并提高算法的执行效率。 >1. 确定dp数组(dp table)以及下标的含义 > 2. 确定递推公式> 3. dp数组如何初始化> 4. 确定遍历顺序 > 5. 举例推导dp数组原创 2025-01-13 14:51:14 · 978 阅读 · 0 评论 -
Javascript算法——动态规划算法(五部曲)
确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组原创 2025-01-07 14:21:36 · 418 阅读 · 0 评论 -
Javascript算法——贪心算法(一)
贪心算法(Greedy Algorithm)是一种在每一步选择中都采取当前状态下的最优选择(局部最优)的算法设计方法。通过局部最优解的累积,试图最终达到全局最优解。尽管贪心算法并不总能保证得到最优解,但它对某些问题(如优化类问题)非常有效。问题描述:有两组数据,分别是孩子的胃口数组 和饼干大小数组 。每个孩子只能吃一个饼干,只有当饼干的大小 ≥ 孩子的胃口时,该饼干才能满足该孩子。求最多有多少孩子可以满足。贪心思路:代码实现:案例 2:跳跃游戏问题描述:给定一个非负整数数组,每个元素表示你在该位原创 2025-01-06 11:43:01 · 1430 阅读 · 0 评论 -
[总结]Javascript回溯算法大全——组合、分割、子集、排列和棋盘问题
"[总结]Javascript回溯算法大全"涵盖了利用回溯法解决一系列经典问题的策略,包括组合生成、字符串分割、子集枚举、排列生成以及棋盘路径探索等,展示了在JavaScript中如何高效地实现这些算法以解决复杂的组合优化问题。原创 2025-01-05 17:50:50 · 1439 阅读 · 0 评论 -
前端Javascript算法——去重、重新行程安排、N皇后、解数独
JavaScript回溯算法是一种通过递归和状态回溯来探索所有可能解空间的算法,常用于解决组合、排列、子集、图遍历等问题。它通过在每一步尝试所有可能的选项,并在发现当前路径不可行时“回溯”到上一步继续尝试其他选项,直到找到所有解或确定无解。重新行程安排使用图的 DFS 遍历。N 皇后问题是经典的回溯问题,结合剪枝优化。解数独问题是约束求解的典型应用,逐步填充并验证。原创 2025-01-05 17:39:24 · 943 阅读 · 0 评论 -
Javascript算法——回溯算法(子集和全排列问题)
子集问题的回溯解法通过递归的方式枚举所有可能的子集。每个决策点有 2 种选择:选或不选当前元素,通过递归深入到下一个元素,直到遍历完所有元素后返回。回溯算法清晰地展示了递归思想和状态回溯的特性,是理解深度优先搜索(DFS)的一种非常好的实践。全排列问题是回溯算法的经典应用,要求从一组元素中生成所有可能的排列。回溯的基本思想是逐步构建排列,遇到选择时递归深入,遍历完所有可能的选择后通过回溯撤销选择,返回上一步继续尝试其他选择。由于全排列问题要求生成所有可能的排列,时间复杂度通常为O(n!,其中n为数组的大小。原创 2025-01-04 16:18:45 · 1141 阅读 · 0 评论 -
Javascript回溯算法——分割问题
分割问题(Partition Problem)通常是指将一个给定的集合、字符串或数组,按照某种规则进行划分。回溯算法在解决这类问题时,通过逐步尝试各种分割方式来找到符合条件的解决方案。回文子串、IP复原原创 2025-01-03 11:14:50 · 1015 阅读 · 0 评论 -
Javascript算法——回溯算法(组合问题)
组合问题是经典的算法问题,通常涉及从一组元素中选择若干个元素,按照不同的规则生成所有符合条件的组合。根据问题的要求,组合问题可以按照不同的条件和约束进行分类。组合问题的分类方法有很多,通常可以根据是否允许重复选择、是否考虑顺序、是否存在约束条件等多个方面进行划分。常见的组合问题包括:基础的子集与组合问题、带有约束的组合问题(如组合总和、分割问题等)、与排列、分配相关的问题(如背包问题、整数划分问题等)以及需要结合动态规划的复杂组合问题等。原创 2025-01-02 17:30:24 · 1160 阅读 · 0 评论 -
Javascript算法详解——动态规划算法和排序算法
动态规划算法是一种通过分解复杂问题为更小的子问题,并存储子问题的解以避免重复计算,从而解决整个问题的优化技术;而排序算法则是一系列用于将一组数据按照特定顺序(如从小到大或从大到小)重新排列的算法。原创 2024-12-29 13:48:38 · 1284 阅读 · 0 评论 -
Javascript数据结构常见面试题目(全)
数据结构理解:了解基本数据结构(如数组、链表、栈、队列、哈希表、树、图等)的内部实现和操作。算法能力:能够用高效的算法解决问题,优化时间和空间复杂度。编程能力:写清晰、简洁、可维护的代码。问题分析与调试:能够清晰地理解题目,并分步解决,若有 bug 能够快速定位并修复。数据结构是组织和存储数据的基础,直接影响程序的效率和性能。数据结构面试题的考察重点包括链表、栈、队列、哈希表、堆、树(如二叉树、红黑树)、图的实现与操作、数据结构的时间复杂度分析、如何在不同场景下选择合适的数据结构、以及数据结构的优化原创 2024-12-28 13:22:35 · 1443 阅读 · 0 评论 -
Javascript数据结构常见题目(一)
"Javascript数据结构常见题目通常涵盖数组操作、对象管理、链表、栈、队列、哈希表、树(如二叉树、平衡树)、图等基本数据结构的实现与应用,以及排序算法、查找算法、递归与动态规划等算法问题的解法。"原创 2024-12-28 13:10:45 · 648 阅读 · 0 评论 -
前端Javascript数据结构与算法(三 **中等**level)
JS数据结构与算法常考内容主要包括常见数据结构的理解和应用,如数组、链表、栈、队列、哈希表、树(特别是二叉树和二叉搜索树)和图等,以及基本的排序算法(如冒泡排序、选择排序、插入排序、归并排序、快速排序等)和查找算法(如二分查找)。此外,还可能涉及算法的效率分析、时间复杂度和空间复杂度的计算,以及特定问题的算法设计,如贪心算法、动态规划等在JS中的实现。这些内容在前端面试和开发中都是非常重要的基础知识。原创 2024-12-23 09:13:13 · 530 阅读 · 0 评论 -
前端Javascript数据结构与算法常见题目(二 **简单level**)
JS数据结构与算法常考内容主要包括常见数据结构的理解和应用,如数组、链表、栈、队列、哈希表、树(特别是二叉树和二叉搜索树)和图等,以及基本的排序算法(如冒泡排序、选择排序、插入排序、归并排序、快速排序等)和查找算法(如二分查找)。此外,还可能涉及算法的效率分析、时间复杂度和空间复杂度的计算,以及特定问题的算法设计,如贪心算法、动态规划等在JS中的实现。这些内容在前端面试和开发中都是非常重要的基础知识。原创 2024-12-23 09:05:06 · 1086 阅读 · 0 评论 -
前端笔试面试题目——数据结构和算法篇(一)
算法和数据结构是程序设计的核心,广泛应用于各种问题的解决。算法和数据结构面试题的考察重点包括常见算法(如排序、查找、动态规划、贪心算法)的实现与优化、基本数据结构(如数组、链表、栈、队列、树、图)的操作与应用、时间和空间复杂度分析、以及常见面试题的解题思路。原创 2024-12-22 12:50:40 · 1836 阅读 · 0 评论 -
Javascript算法——回溯算法详解
回溯算法(Backtracking) 是一种通过试错的方式解决问题的算法,主要应用于组合、排列和求解约束满足问题(如数独、N皇后问题)。它通过构建问题的解空间树并在遍历时“回溯”来找到所有解或最优解。原创 2024-12-20 09:08:07 · 1062 阅读 · 0 评论 -
Javascript数据结构——二叉树篇
二叉树是一种树形数据结构,其中每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树常用于实现数据结构如堆、二叉搜索树等,以及算法如快速排序、表达式树等。原创 2024-12-19 08:47:19 · 1501 阅读 · 0 评论 -
Javascript常见数据结构——二叉树
二叉树(Binary Tree)是一种重要的数据结构,每个节点最多只有两个子节点,分别称为左子节点和右子节点。二叉树广泛用于树形数据的处理,比如表达式解析、优先级队列、文件系统结构等。本文将详细介绍二叉树的结构、常见操作,并通过 JavaScript 示例代码进行演示。原创 2024-11-12 13:28:56 · 612 阅读 · 0 评论 -
Javascript常见数据结构及其应用场景
数组是由一组按顺序排列的值组成,每个值都有一个对应的索引(下标),可以通过索引访问和修改数组中的元素。原创 2024-11-07 21:32:36 · 1204 阅读 · 0 评论 -
Javascript——KMP算法
KMP算法,全称Knuth-Morris-Pratt算法,是一种用于字符串匹配的算法,由Donald Knuth、Vaughan Pratt和James Morris发明。该算法的主要思想是通过预处理模式字符串,构建一个部分匹配表(也称为失配函数),然后利用该表进行模式匹配,从而实现高效的字符串匹配。因此,掌握KMP算法并灵活运用在实际项目中是非常有益的。表或前缀函数)用于存储部分匹配信息,以便在模式串与文本串不匹配时,模式串能够跳过一些不必要的字符比较,直接跳转到可能匹配的位置。原创 2024-10-30 11:36:00 · 638 阅读 · 0 评论 -
Javascript数据结构——哈希表常见应用
哈希表(Hash Table)是一种常见的数据结构,用于高效地存储和查找键值对。以下列出常见的7个与哈希表相关的算法题目,并附上代码示例和说明。原创 2024-10-25 22:03:26 · 451 阅读 · 0 评论 -
Javascript数据结构——哈希表
哈希表的基本思路是,设要存储的元素个数为n,设置一个长度为m(m≥n)的连续内存单元,以每个元素的关键字k为自变量,通过哈希函数把k映射为内存单元的地址(下标),并把该元素存储在这个内存单元中,如此构造的存储结构称为哈希表。简单来说,哈希表就像是一个巨大的书架,每个书架格都有一个编号(哈希值),而每个编号下都可以存放一本书(键值对)。当你想要找一本书时,只需知道它的编号,就能迅速定位到它所在的位置。原创 2024-10-24 10:35:26 · 1107 阅读 · 0 评论 -
Javascript数据结构——链表
在JavaScript中,链表作为一种常见的基础数据结构,具有节点动态分配、内存使用灵活等特点,特别适用于插入和删除操作频繁的场景。总之,链表在JavaScript中具有广泛的应用场景和算法题目。掌握链表的基本结构和操作是实现这些算法和应用的基础。通过不断练习和实践,可以加深对链表的理解和掌握。:判断链表中是否存在环形结构,这通常可以使用快慢指针的技巧来实现。:从头到尾遍历链表,处理每个节点的值或指针。:将两个有序链表合并成一个有序链表。原创 2024-10-22 20:09:28 · 1357 阅读 · 0 评论 -
Javascript链表模拟
在JavaScript中,我们可以使用对象和函数来创建链表结构。链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据部分和指向下一个节点的指针。链表主要有单向链表和双向链表两种类型,这里我们先介绍单向链表。原创 2024-10-21 17:21:24 · 938 阅读 · 0 评论 -
Javascript算法(滑块窗口、螺旋矩阵)
JS滑块窗口算法,即滑动窗口算法(Sliding Window),在JavaScript中的应用场景主要集中在处理字符串和数组等数据结构中的子串或子数组问题。这种算法通过维护一个窗口,并移动窗口的两个边界(左右指针)来优化暴力枚举的时间复杂度,从而提高算法的执行效率。,要看rows和columns的大小,如果rows>columns,则是中间列,相反,则是中间行.,则矩阵最中间位置不只是[mid][mid],而是会留下来一个特殊的中间行或者中间列,同样的原理,本题的mid计算也存在上述差异;原创 2024-10-20 19:34:21 · 873 阅读 · 0 评论 -
Javascript算法——双指针法移除元素、数组去重、比较含退格字符、有序数组平方
暴力求解法(两层for循环),length单词拼写错误❌二次嵌套for的length设置。return位置❌ ,核心基础。双指针法(一层for循环)原创 2024-10-17 11:39:06 · 728 阅读 · 0 评论 -
Javascript算法——二分查找
找左边界时,需将right赋给左边界,所以在target=num[mid]时更新left并更新右边界情况二,通过条件判断// 记录一下leftBorder没有被赋值的情况if(nums[middle] >= target){ // 寻找左边界,nums[middle] == target的时候更新right} else {// 记录一下rightBorder没有被赋值的情况。原创 2024-10-16 16:18:47 · 1189 阅读 · 0 评论
分享