![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 58
一只蒻蒻
一只不知名的前端爱好者
展开
-
leetcode 5. 最长回文子串 js 两种方法
leetcode 5. 最长回文子串题目给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。1 <= s.length <= 1000s 仅由数字和英文字母(大写和/或小写)组成方案一:暴力法两个变量,遍历起始位置和子串长度,判断当前子串是否为回文串,如果是且子串长度>max,则记录子串,更改max值。时间复杂度大概为O(n^3),有题目得到s.length <=10原创 2021-03-31 11:46:53 · 678 阅读 · 0 评论 -
剑指 Offer 10- II. 青蛙跳台阶问题 js
剑指 Offer 10- II. 青蛙跳台阶问题题目一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:2示例 3:输入:n = 0输出:1代码var numWays = function (n) { if (n <= 1) { return 1; } let dp = new原创 2021-03-31 11:45:48 · 242 阅读 · 0 评论 -
前端动态规划 js 看这篇就够了
动态规划90% 的字符串问题都可以用动态规划解决,并且90%是采用二维数组。一、动态规划的三大步骤动态规划,无非就是利用历史记录,来避免我们的重复计算。而这些历史记录,我们得需要一些变量来保存,一般是用一维数组或者二维数组来保存。动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。最优子结构指的是,问题的最优解包含子问题的最优解。反过来说就是,我们可以通过子问题的最优解,推导出问题的最优解。动态规划题三个重要步骤:1、定义数组元素的含义。上面说了,原创 2021-03-31 11:44:42 · 1811 阅读 · 1 评论 -
【leetcode 611】有效三角形的个数 js
【leetcode 611】有效三角形的个数给定一个包含非负整数的数组,你的任务是统计其中可以组成三角形三条边的三元组个数。示例 1:输入: [2,2,3,4]输出: 3解释:有效的组合是: 2,3,4 (使用第一个 2)2,3,4 (使用第二个 2)2,2,3解法一:枚举形成三角形的条件:两边之和大于第三边var triangleNumber = function (arr) { let count = 0; let len = arr.length; for (l原创 2021-03-29 19:07:35 · 706 阅读 · 1 评论 -
【leetcode 42】接雨水 js
【leetcode 42】接雨水题目给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例 1:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。解决思路概念:left_max: 左边的最大值,它是从左往右遍历找到的right_max: 右边的最大值,它是从右往原创 2021-03-26 16:45:22 · 152 阅读 · 0 评论 -
leetcode 90 子集2 js
leetcode 90 子集2给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。**说明:**解集不能包含重复的子集。解题思路:对于数组中的每一个数字,有两种状态,取或不取。这个问题为一个树形问题,故采用回溯法解决。难点在于如何去重,即剪枝。将数组从小到大排序,重复数字,只取第一个。一个数字有两种状态:1、不取,直接存入结果数组2、取,继续往后搜索。刻意联系的思路:1、递归树,状态变量:当前下标和新数组2、递归出口:当前下标到达末尾,即搜索完原创 2021-03-23 08:42:25 · 161 阅读 · 0 评论 -
leetcode 77 组合 js
leetcode 77 组合给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。示例:输入: n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]解题思路看到题目首先思考使用什么算法、使用什么数据结构。n个数中选k个,每个数字有两种状态,被选或没被选,那么这个时候,我们会发现这个题目的是树形问题。以n=4,k=2为例,当我们选择数字1,第二个数字的选择只能是2,3,4,形成了一原创 2021-03-23 08:42:04 · 262 阅读 · 0 评论 -
leetcode 39 组合总和 js
leetcode 39 组合总和给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入:candidates = [2,3,6,7], target = 7,所求解集为:[ [7], [2,2,3]]解题思路:我们来思考一下题目是需要使用什么数原创 2021-03-23 08:40:32 · 224 阅读 · 0 评论 -
leetcode 40 组合总和2 js
leetcode 40 组合总和2给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,所求解集为:[ [1, 7], [1, 2, 5], [2,原创 2021-03-23 08:39:20 · 194 阅读 · 0 评论 -
leetcode46 全排列 js
leetcode46 全排列给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]解题思路:分析题目可知为树形问题,可以使用回溯算法。且每一个数字只能选择一次,故我们需要使用一个变量记录数字是否被选择过。使用刻意练习的思路思考:1、递归树和状态变量。状态变量为新数组。2、递归出口 len === n3、选择列表原创 2021-03-23 08:38:28 · 226 阅读 · 0 评论 -
leetcode 47全排列2 js
leetcode 47全排列2给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。示例 1:输入:nums = [1,1,2]输出:[[1,1,2], [1,2,1], [2,1,1]]解题思路:这道题我们可以看成填写一个n列的空格,我们需要从左往右填写n个数,每个数只能填一次,我们自然而然地想到穷举,可以画出一个递归树,该题目为树形问题,故可以采取回溯法。由于每个数只能填一次,我们需要使用标记数组来标记数字是否填过。由于为可重复数组,我们需要为每一个元素都原创 2021-03-23 08:37:40 · 235 阅读 · 0 评论 -
剑指 Offer 38. 字符串的排列 js
剑指 Offer 38. 字符串的排列输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s = "abc"输出:["abc","acb","bac","bca","cab","cba"]输入:s = "aab"输出:["aba","aab","baa"]解题思路:分析题目,我们可以很容易地看出可以使用遍历的方法进行求解,即为树形问题,使用回溯法。在该题中,题目没有说明字符串中字符不重复,故我们需要对数组进行排列去重。原创 2021-03-23 08:36:37 · 234 阅读 · 0 评论 -
leetcode 131. 分割回文串 js
leetcode 131. 分割回文串给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。回文串 是正着读和反着读都一样的字符串。示例 1:输入:s = "aab"输出:[["a","a","b"],["aa","b"]]示例 2:输入:s = "a"输出:[["a"]]解题思路:我们对题目进行分析,我们要将字符串分割成若干个回文串,我们的求解思路是从第一个字符开始划分,当形成回文串后,将该回文串放入结果中,再对该下标后的字符进行原创 2021-03-23 08:35:07 · 340 阅读 · 0 评论 -
【数据结构与算法】带你玩透回溯法
回溯法递归算法中非常经典的思想:回溯法。这样的算法思想通常都应用在一类问题上,这类问题叫做树型问题。用回溯算法解决问题的一般步骤:1、 针对所给问题,定义问题的解空间,它至少包含问题的一个(最优)解。2 、确定易于搜索的解空间结构,使得能用回溯法方便地搜索整个解空间 。3 、以深度优先的方式搜索解空间,并且在搜索过程中用剪枝函数避免无效搜索。简单来说,回溯法可以理解成为通过选择不同的岔路口,来寻找目的地,一个岔路口一个岔路口的去尝试找到目的地,如果走错了路的话,继续返回到上一个岔路口的另外一原创 2021-03-14 14:36:51 · 356 阅读 · 0 评论 -
js大数加和 leetcode 415 字符串加和
leetcode415 大数相加题目给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。返回的形式是字符串解法一:split+reverse+竖式加法使用split将字符串分割成数组,并使用reverse进行数组翻转,进行竖式相加,注意进位。将每次个位数计算结果保存至结果数组中,最后翻转输出。举个例子来描述处理过程:num1 "123459" ;num2 "123"两个数组翻转后:num1 "954321"num2 "321"此时个位对齐,直接相加,注意保存进位即可。原创 2021-03-13 17:17:29 · 160 阅读 · 0 评论 -
【剑指 Offer 20】js 表示数值的字符串
表示数值的字符串题目请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、“5e2”、"-123"、“3.1416”、"-1E-16"、“0123"都表示数值,但"12e”、“1a3.14”、“1.2.3”、"±5"及"12e+5.4"都不是。思路解法一 :使用trim方法字符串去除空格。如果不存在,返回false,如果存在,转换成Number,判断是否为NaN。var isNumber = function(s) { return s.trim()?!i原创 2021-02-16 11:40:18 · 116 阅读 · 0 评论 -
【leetcode 239】js 滑动窗口最大值
滑动窗口最大值题目给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。示例 1:输入:nums = [1,3,-1,-3,5,3,6,7], k = 3输出:[3,3,5,5,6,7]解释:滑动窗口的位置 最大值--------------- -----[1 3 -1] -3 5 3 6 7原创 2021-02-09 18:15:59 · 182 阅读 · 0 评论 -
单调队列详解
刚学单调队列时,在网上各大博客找文章学,说实话,写得很杂,表示自己懵逼了些许,最后硬是啃出来了,所以我决定要写一篇能让大部分人都看懂的博客来。说单调队列,那我们就先说说这个单调队列是个什么物种。单调队列从字面上看,无非就是有某种单调性的队列,没错,这就是所谓的单调队列。 单调队列它分两种,一种是单调递增的,另外一种是单调递减的。在这搬出百度百科的解释:不断地向缓存数组里读入元素,也不时地去掉最老的元素,不定期...转载 2021-02-09 18:11:32 · 215 阅读 · 0 评论 -
【剑指 Offer 31】js 栈的压入、弹出序列
栈的压入、弹出序列题目输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。示例 1:输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]输出:true解释:我们可以按以下顺序执行:push(1), push(2), pus原创 2021-02-09 15:06:32 · 116 阅读 · 0 评论 -
哈希表基本使用总结
哈希表哈希的基本原理是将给定的键值转换为偏移地址来检索记录。键转换为地址是通过一种关系(公式)来完成的,这就是哈希(散列)函数。虽然哈希表是一种有效的搜索技术,但是它还有些缺点。两个不同的关键字,由于哈希函数值相同,因而被映射到同一表位置上。该现象称为冲突。发生冲突的两个关键字称为该哈希函数的同义词。如何设计哈希函数以及如何避免冲突就是哈希表的常见问题。 好的哈希函数的选择有两条标准:1.简单并且能够快速计算2.能够在址空间中获取键的均匀人分布例如下面的题目:leetcode 38原创 2021-02-09 14:22:13 · 1592 阅读 · 0 评论 -
【leetcode 771】js 宝石与石头
宝石与石头题目给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。示例 1:输入: J = "aA", S = "aAAbbbb"输出: 3示例 2:输入: J = "z", S = "ZZ"输出: 0注意:S 和 J 最多含有50个字母。J 中的字符不重复。代码解法1:in原创 2021-02-09 14:20:23 · 117 阅读 · 0 评论 -
【剑指 Offer 30】js 包含min函数的栈
包含min函数的栈题目定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.min(); --> 返回 -3.minStack.pop();minStack.top(); --&原创 2021-02-09 14:14:03 · 139 阅读 · 0 评论 -
【剑指Offer 09】js 用两个栈实现队列
用两个栈实现队列题目用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1:输入:["CQueue","appendTail","deleteHead","deleteHead"][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入:["CQueue","deleteHead","ap原创 2021-02-09 13:45:18 · 239 阅读 · 0 评论 -
【剑指Offer 36】js 二叉搜索树与双向链表
二叉搜索树与双向链表自己想确实没思路题目输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。为了让您更好地理解问题,以下面的二叉搜索树为例:我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。下图展示了上面的二叉搜索树转化成的链表。“head” 表示指向链表中有最小元素的节点。特别地,我们希望可以就地完成转换操作原创 2021-02-02 17:26:15 · 109 阅读 · 1 评论 -
【剑指Offer 34】js 二叉树中和为某一值的路径
二叉树中和为某一值的路径输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1返回:[ [5,4,11,2], [5,8,4,5]]思路套用回原创 2021-02-02 16:20:50 · 164 阅读 · 0 评论 -
【剑指Offer 55】js 平衡二叉树
平衡二叉树题目输入一棵二叉树,判断该二叉树是否是平衡二叉树。平衡二叉树:每个子树的深度之差不超过1示例 1:输入:root = [3,9,20,null,null,15,7]输出:true思路后续遍历二叉树,在遍历二叉树每个节点前都会遍历其左右子树比较左右子树的深度,若差值>1则返回一个标记-1表示当前子树不平衡若左右子树存在一个不平衡或左右子树差值大于1,则整棵树不平衡若左右子树平衡,则返回当前树深:左右子树最大深度+1代码// 1.函数功能:求原创 2021-01-19 15:30:28 · 112 阅读 · 0 评论 -
【Leetcode 111】js 二叉树的最小深度
4.2 二叉树的最小深度题目给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度 2思路深度优先+分治左右子树不为空:左右子树深度和右子树深度最小值+1左子树为空:右子树深度最小值+1右子树为空:左子树深度最小值+1代码/* 思路 递归1.原创 2021-01-19 15:09:00 · 259 阅读 · 0 评论 -
【Leetcode 104】js 二叉树的最大深度
二叉树的最大深度题目给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。思路深度优先遍历 + 分治一棵二叉树的最大深度 = 左子树深度和右子树深度的最大值+1代码var maxDepth = function (root) { if原创 2021-01-19 14:50:32 · 304 阅读 · 0 评论 -
【剑指Offer 33】js 二叉搜索树的后序遍历
二叉搜索树的后序遍历题目输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。参考以下这颗二叉搜索树: 5 / \ 2 6 / \ 1 3示例 1:输入: [1,6,3,2,5]输出: false示例 2:输入: [1,3,2,6,5]输出: true思路后序遍历分成三部分:最后一个节点为根节点左子树的值比根节点小右子树的值比根节点大原创 2021-01-19 14:30:37 · 87 阅读 · 0 评论 -
【Leetcode 230】js 二叉搜索树的第k小的元素
二叉搜索树的第k小的元素题目给定一棵二叉搜索树,请找出其中的第k小的结点。 例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。示例 1:输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2输出: 1思路二叉搜索树的中序遍历即排序后的节点,本题实际考察二叉树的遍历。代码递归实现function KthNode(root, k) { const arr = []; orderTrave原创 2021-01-19 11:55:14 · 144 阅读 · 0 评论 -
【剑指Offer 27】 js 二叉树的镜像
二叉树的镜像题目操作给定的二叉树,将其变换为源二叉树的镜像。例如输入: 4 / \ 2 7 / \ / \1 3 6 9镜像输出: 4 / \ 7 2 / \ / \9 6 3 1示例 1:输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]思路递归交换二叉树所有节点的左右节点位置代码/* 思路,符合递归的要求,每个子树都要进行节点交换 1.交换原创 2021-01-19 11:54:00 · 83 阅读 · 0 评论 -
【Leetcode 101】js 对称二叉树
对称二叉树题目请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3示例 1:输入:root = [1,2,2,3,4,4,3]输出:true思路二叉树的右子树是二叉树左子树的镜像二叉树。镜像二叉树:两颗二叉树根结点相同,但他们的左右两个子节点交换了位置。对称二叉树满足以下条件:根节点相同原创 2021-01-19 11:53:03 · 104 阅读 · 0 评论 -
【剑指Offer07 变型题】js 给前中遍历,求后序遍历
给前中遍历,求后序遍历。题目给定一棵二叉树的前序遍历和中序遍历,求其后序遍历输入描述:两个字符串,其长度n均小于等于26。 第一行为前序遍历,第二行为中序遍历。 二叉树中的结点名称以大写字母表示:A,B,C…最多26个结点。输出描述:输入样例可能有多组,对于每组测试样例, 输出一行,为后序遍历的字符串。样例:输入ABCBACFDXEAGXDEFAG输出BCAXEDGAF思路本题一共有两种思路:重建二叉树后进行后序遍历。递归拼接二叉树的后序遍历。★★★★★推荐第原创 2021-01-17 15:06:08 · 298 阅读 · 0 评论 -
【剑指Offer 07】js 重建二叉树
重建二叉树题目输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7思路前序遍历:根节点原创 2021-01-17 14:36:29 · 88 阅读 · 0 评论 -
【Leetcode 145】js 二叉树的后序遍历
二叉树后序遍历所谓后续遍历,即按照左右中的顺序进行遍历。题目给定一个二叉树,返回它的后序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1]代码递归算法var postorderTraversal = function(root , array = []){ if(root){ postorderTraversal(root.left , array); postorde原创 2021-01-17 12:07:49 · 234 阅读 · 0 评论 -
【Leetcode 144】js 二叉树的前序遍历
二叉树前序遍历所谓前序遍历,即按照中左右的顺序进行遍历。题目给定一个二叉树,返回它的前序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]代码递归算法var preorderTraversal = function(root , array = []){ if(root){ array.push(root.val); preorderTraversal(root.lef原创 2021-01-17 11:31:46 · 252 阅读 · 0 评论 -
【Leetcode 94】js 二叉树的中序遍历
二叉树的中序遍历二叉树的中序遍历,即以左中右的顺序依次遍历数据元素。题目给定一个二叉树,返回它的中序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]代码解法1:递归实现递归有两种写法,递归函数本身、在闭包中递归。var inorderTraversal = function(root , array = []){ //如果根节点不为空 if(root){ //对左节点遍历原创 2021-01-17 11:30:09 · 366 阅读 · 0 评论 -
一篇文章教你彻底学会链表在算法中的基本使用
链表前言链表概述用一组任意存储的单元来存储线性表的数据元素。一个对象存储着本身的值和下一个元素的地址。需要遍历才能查询到元素,查询慢。插入元素只需断开连接重新赋值,插入快。基本应用主要是对链表基本概念和特性的应用,如果基础概念掌握牢靠,此类问题即可迎刃而解从尾到头打印链表删除链表中的节点反转链表复杂链表的复制环类题目环类题目即从判断一个单链表是否存在循环而扩展衍生的问题环形链表环形链表 Ⅱ(链表环的入口节点)约瑟夫环双指针双指针的思想在链表和数组中的题原创 2021-01-16 09:30:20 · 105 阅读 · 0 评论 -
【Leetcode 430】js 扁平化多级双向链表
扁平化多级双向链表题目多级双向链表中,除了指向下一个节点和前一个节点指针之外,它还有一个子链表指针,可能指向单独的双向链表。这些子列表也可能会有一个或多个自己的子项,依此类推,生成多级数据结构,如下面的示例所示。给你位于列表第一级的头节点,请你扁平化列表,使所有结点出现在单级双链表中。示例 1:输入:head =[1,2,3,4,5,6,null,null,null,7,8,9,10,null,null,11,12]输出:[1,2,3,7,8,11,12,9,10,4,5,6]解释:输入的原创 2021-01-16 09:29:09 · 115 阅读 · 0 评论 -
【剑指Offer 52】js 两个链表的第一个公共节点
两个链表的第一个公共节点剑指Offer52题目输入两个链表,找出它们的第一个公共结点。程序尽量满足O(n)时间复杂度,且仅用O(1)内存示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链表 A原创 2021-01-16 09:26:06 · 118 阅读 · 0 评论