链表面试题203.移除链表元素题目解法一:递归解法二:迭代206.反转链表题目解法一:递归解法二:迭代876.链表的中间结点题目解法一:快慢指针法解法二:单指针法链表中倒数第k个结点题目解法21.合并两个有序链表题目解法一:递归解法二:迭代CM11链表分割题目解法OR36链表的回文结构题目解法160.相交链表题目解法141.环形链表解法142.环形链表II题目解析138.复制带随机指针的链表题目解析结语203.移除链表元素题目给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val==val的节点,并返回新的头节点。题目链接:移除链表元素解法一:递归代码如下:str
只有把抱怨环境的心情,化为上进的力量,才是成功的保证。 ——罗曼·罗兰目录🍉一.相交链表💐1.双指针🍍2.计算长度加双指针🍒二.两两交换链表中的结点 🍌1.迭代 🍉一.相交链表给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中不存在环。示例1: 输入:intersectVal=8,listA=[4,1,8,4,5],listB=[5,6,1,8,4,5],skipA=2,skipB=3输出:Intersectedat'8'解释:相交
生命不是安排,而是追求,人生的意义也许永远没有答案,但也要尽情感受这种没有答案的人生。 --弗吉尼亚. 伍尔芙 目录前言:🌸一.复制带随机指针的链表🌅1.复制结点链接到原本链表每一个结点的后面🍁2.让原结点的random索引到新结点的random上 🌺3.先把原链表给链接起来,然后再开始把复制出来的结点给尾插,组成我们复制出来的链表4.完整代码构造这个链表的 深拷贝。 深拷贝应该正好由n个全新节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的next指针和ran
各位朋友们,大家五一劳动节快乐啊,在这里祝大家假期玩得愉快!但是在玩耍的期间不要忘记了敲代码哦。今天我为大家分享的是二叉树的第四篇,废话不多说,我们一起来看看吧。文章目录二叉树的最近公共祖先题目要求做题思路方法一代码实现方法二代码实现根据二叉树创建字符串题目要求做题思路二叉树的最近公共祖先leetcode之二叉树的最近公共祖先(难度:中等)题目要求给定一个二叉树,找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树T的两个节点p、q,最近公共祖先表示为一个节点x,满足x是p、q的祖先且x的深度尽可能大(一个节点也可以是它自己的祖先)。”示例1:输入:root=[3
数组相关面试题26.删除有序数组中的重复项题目说明示例一示例二提示解析27.移除元素题目说明示例1示例2提示解析解法一解法二88.合并两个有序数组题目示例一示例二示例三提示解析结语26.删除有序数组中的重复项题目给你一个升序排列的数组nums,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。元素的相对顺序应该保持一致。然后返回nums中唯一元素的个数。考虑nums的唯一元素的数量为k,你需要做以下事情确保你的题解可以被通过:★更改数组nums,使nums的前k个元素包含唯一元素,并按照它们最初在nums中出现的顺序排列。nums的其余元素与nums的大小不重要。★返回
文章目录一、接雨水方法一:按列求(动态规划)方法二:双指针方法三:单调栈二、直方图最大矩形面积单调栈哨兵位优化三、矩阵中最大的矩形前缀和+单调栈一、接雨水题目链接题目描述:给定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个单位的雨水(蓝色部分表示雨水)。示例2:输入:height=[4,2,0,3,2,5]输出:9方法一:按列求(动态规划)我们把每一列能接的水加起来
🐨文章目录🍔1.题目🍗2.思路🌯3.代码实现🍺4.题目链接🍔1.题目给定一个只包括'(',')','{','}','[',']'的字符串s,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。示例1:输入:s=“()”输出:true示例2:输入:s=“()[]{}”输出:true示例3:输入:s=“(]”输出:false提示:1s仅由括号'()[]{}'组成🍗2.思路这题可以使用数组来暴力求解,但要涉及到多次的遍历,效率不是很高。我们可以采用数据结构里面的栈:将左括号入栈,每次遇到一个右括号时,判断栈顶的
LeetCode每日一题系列题目:828.统计子串中的唯一字符难度:困难文章目录LeetCode每日一题系列题目示例思路题解题目给你一个混合字符串s,请你返回s中第二大的数字,如果不存在第二大的数字,请你返回-1。混合字符串由小写英文字母和数字组成。示例示例1:输入:s=“dfa12321afd”输出:2解释:出现在s中的数字包括[1,2,3]。第二大的数字是2。示例2:输入:s=“abc1111”输出:-1解释:出现在s中的数字只包含[1]。没有第二大的数字。提示:1s只包含小写英文字母和(或)数字。思路题目意思很简单,就是找出给定由小写字母和数字组成的字符串中,数字排名第二大的数字即可。在
文章目录一、有序数组的平方错误的尝试思路注意AC代码暴力版本双指针方法二、长度最小的子数组错误的尝试思路滑动窗口介绍注意AC代码三、螺旋矩阵错误的尝试思路注意AC代码继承前边循环变量的写法不继承前边循环变量的做法四、数组做题思路总结基本知识解题思路一、有序数组的平方题目链接错误的尝试一开始尝试双指针+原地完成(即空间复杂度为O(1))。将所有的情况分成了全部大于等于0,全部小于等于0,有正有负三种情况,提出的对应方案是直接平方、平方并反转【用临时变量交换两端值,但是有三种情况老是同时解决只有一个、偶数个的情况、奇数个情况】、双指针【左边和右边绝对值比较,但是0和0挨着的情况总是需要特殊处理】。
❓503.下一个更大元素II难度:中等给定一个循环数组nums(nums[nums.length-1]的下一个元素是nums[0]),返回nums中每个元素的下一个更大元素。数字x的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出-1。示例1:输入:nums=[1,2,1]输出:[2,-1,2]解释:第一个1的下一个更大的数是2;数字2找不到下一个更大的数;第二个1的下一个最大的数需要循环搜索,结果也是2。示例2:输入:nums=[1,2,3,4,3]输出:[2,3,4,-1,4]提示:11nums.length