- 博客(88)
- 资源 (3)
- 收藏
- 关注
原创 19.删除链表的倒数第N个节点
需要找到倒数第 n 个节点,因此可以使用两个指针 first 和 second 同时对链表进行遍历,并且 first 比 second 超前 n 个节点。当 first 遍历到链表的末尾时,second 就恰好处于倒数第 n 个节点。给你一个链表,删除链表的倒数第。个结点,并且返回链表的头结点。
2024-09-29 20:08:16
272
原创 141.环形链表
指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。来表示链表尾连接到链表中的位置(索引从 0 开始)。如果链表中有某个节点,可以通过连续跟踪。链表中有一个环,其尾部连接到第二个节点。链表中有一个环,其尾部连接到第一个节点。仅仅是为了标识链表的实际情况。(即,常量)内存解决此问题吗?,判断链表中是否有环。给你一个链表的头节点。
2024-09-25 22:18:41
317
原创 200.岛屿数量
岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。(水)组成的的二维网格,请你计算网格中岛屿的数量。此外,你可以假设该网格的四条边均被水包围。思路1:深度深度优先搜索。
2024-09-18 19:42:42
214
原创 402.移除K位数字
移除掉三个数字 4, 3, 和 2 形成一个新的最小的数字 1219。思路:贪心 + 单调栈,元素依次入栈,保存栈元素单调不降,否则则删除元素。移掉首位的 1 剩下的数字为 200. 注意输出不能有任何前导零。位数字,使得剩下的数字最小。请你以字符串形式返回这个最小的数字。从原数字移除所有的数字,剩余为空就是 0。给你一个以字符串表示的非负整数。
2024-09-16 21:09:32
170
原创 234.回文链表
思路1:复制链表值到数组列表中,使用双索引判断是否是回文数。给你一个单链表的头节点。,请你判断该链表是否为。空间复杂度解决此题?
2024-09-12 21:55:20
220
原创 73.矩阵置零
思路:第一次遍历,使用两个标记数组分别记录每一行和每一列是否有零出现。第二遍历根据标记数组清零。,则将其所在行和列的所有元素都设为。的矩阵,如果一个元素为。
2024-09-11 21:17:46
254
原创 53.最大子数组和
请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。连续子数组 [4,-1,2,1] 的和最大,为 6。是数组中的一个连续部分。
2024-09-10 22:10:18
274
原创 560.和为k的子数组
思路二:前缀和思想,计算每个位置的前缀和,并使用一个哈希表来存储每个前缀和出现的次数。在遍历的过程中,检查是否存在mp[j] - k的前缀和,如果存在,说明从某个位置到当前位置的连续子数组的和为k,将对应的次数累加到结果中。通过遍历一次数组,可以统计出和为k的连续子数组的个数,并且时间复杂度为O(n),其中n为数组的长度。子数组是数组中元素的连续非空序列。
2024-09-05 22:15:56
348
原创 35.搜索插入位置
思路:二分查找,当元素存在返回元素下标,当元素不存在返回left下标,因为最终left=right + 1;left下标元素大于target.给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为。
2024-09-04 21:51:06
416
原创 面试提 16.26 计算器
给定一个包含正整数、加(+)、减(-)、乘(*)、除(/)的算数表达式(括号除外),计算其结果。思路:给减号运算的数加负号压栈,乘法和除法先运算后压栈,得到所有操作都是加法运算,最好累加即可。整数除法仅保留整数部分。表达式仅包含非负整数,
2024-09-03 21:39:57
160
原创 121.买卖股票的最佳时期
在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回。设计一个算法来计算你所能获取的最大利润。在这种情况下, 没有交易完成, 所以最大利润为 0。买入这只股票,并选择在。
2024-08-31 15:47:12
336
原创 70.爬楼梯
思路:爬到第 x 级台阶的方案数是爬到第 x−1 级台阶的方案数和爬到第 x−2 级台阶的方案数的和。因此,f(x)=f(x−1)+f(x−2)你有多少种不同的方法可以爬到楼顶呢?1. 1 阶 + 1 阶 + 1 阶。有两种方法可以爬到楼顶。1. 1 阶 + 1 阶。有三种方法可以爬到楼顶。2. 1 阶 + 2 阶。3. 2 阶 + 1 阶。
2024-08-31 15:22:56
220
原创 3.无重复的最长字串
思路:滑动窗口,当无重复字符时,右下标向前移动,有重复字符时,左下标向前移动。,请你找出其中不含有重复字符的。请注意,你的答案必须是。因为无重复字符的最长子串是。因为无重复字符的最长子串是。因为无重复字符的最长子串是。,所以其长度为 3。,所以其长度为 1。,所以其长度为 3。
2024-08-30 20:07:49
341
原创 136.只出现一次的数字
除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。思路:使用异或运算,相同的数字异或为0,0与数字本身异或等于本身。
2024-08-28 20:01:30
228
原创 160.相交链表
请注意相交节点的值不为 1,因为在链表 A 和链表 B 之中值为 1 的节点 (A 中第二个节点和 B 中第三个节点) 是不同的节点。换句话说,它们在内存中指向两个不同的位置,而链表 A 和链表 B 中值为 8 的节点 (A 中第三个节点,B 中第四个节点) 在内存中指向相同的位置。思路2:双指针,同时交替遍历headA和headB,因此两个指针的遍历次数一样,当链表较短的遍历指针遍历完后会遍历长链表,长指针遍历完也会遍历短链表,如果存在相交节点则会偶遇,如果没有相交节点则会同时到达链表末尾。
2024-08-20 21:41:19
510
原创 283.移动零
思路:快慢指针如果数组没有0,那么快慢指针始终指向同一个位置,每个位置自己和自己交换;如果数组有0,快指针先走一步,此时慢指针对应的就是0,所以要交换。移动到数组的末尾,同时保持非零元素的相对顺序。,必须在不复制数组的情况下原地对数组进行操作。,编写一个函数将所有。
2024-08-19 21:26:14
155
1
原创 242.有效字母的异位词
思路:使用记录第一个字符串字符出现的次数,然后减去第二个字符串字字符出现的次数,如果数组都为零,则代表两个字符串时是字母异位词。中每个字符出现的次数都相同,则称。,编写一个函数来判断。
2024-05-08 15:17:09
317
原创 142.环形链表||
思路:快慢指针,快指针走两步,慢指针走一步,如果有环一定会相遇,且从头结点出发一个指针,从相遇节点 也出发一个指针,这两个指针每次只走一个节点, 那么当这两个指针相遇的时候就是 环形入口的节点。指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。如果链表中有某个节点,可以通过连续跟踪。链表中有一个环,其尾部连接到第二个节点。链表中有一个环,其尾部连接到第一个节点。,返回链表开始入环的第一个节点。来表示链表尾连接到链表中的位置(,仅仅是为了标识链表的实际情况。,则在该链表中没有环。
2024-05-07 16:18:34
368
原创 19.删除链表的倒数第N个结点
思路:设置一个快指针一个慢指针,间隔为N,当快指针移动到末尾时,慢指针指向倒数第N个结点。给你一个链表,删除链表的倒数第。个结点,并且返回链表的头结点。你能尝试使用一趟扫描实现吗?
2024-05-07 15:40:48
346
1
原创 24.两两交换链表中的节点
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
2024-04-20 15:16:24
173
原创 707.设计链表
/ 链表变为 1->2->3。// 现在,链表变为 1->3。以指示链表中的上一个节点。假设链表中的所有节点下标从。你可以选择使用单链表或者双链表,设计并实现自己的链表。是指向下一个节点的指针/引用。如果是双向链表,则还需要属性。
2024-04-10 20:46:13
358
原创 209.长度最小的子数组
如果不存在符合条件的子数组,返回。是该条件下的长度最小的子数组。找出该数组中满足其总和大于等于。思路:双指针,使用滑动窗口检测。个正整数的数组和一个正整数。
2024-04-07 21:07:39
144
原创 977.有序数组的平方
平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]思路:使用头尾双下标,时间复杂度O(n)组成的新数组,要求也按。
2024-04-06 17:19:04
211
原创 27.移除元素
你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。你不需要考虑数组中超出新长度后面的元素。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。// 根据你的函数返回的长度, 它会打印出数组中。// 在函数里修改输入数组对于调用者是可见的。为什么返回数值是整数,但输出的答案是数组呢?的元素,并返回移除后数组的新长度。
2024-04-02 19:12:46
405
原创 49.字母异位词分组
思路二:由于互为字母异位词的两个字符串包含的字母相同,因此两个字符串中的相同字母出现的次数一定是相同的,故可以将每个字母出现的次数使用字符串表示,作为哈希表的键。思路:对每个字符串排序,建立map关联容器。使用排序后的字符串当key,排序后一样的字符串放在一起。是由重新排列源单词的所有字母得到的一个新单词。可以按任意顺序返回结果列表。给你一个字符串数组,请你将。
2024-04-01 21:26:34
310
原创 链表两数相加
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。的链表,表示两个非负的整数。它们每位数字都是按照。请你将两个数相加,并以相同形式返回一个表示和的链表。的方式存储的,并且每个节点只能存储。
2024-03-28 17:18:14
256
原创 刷题记录:最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串。如果不存在公共前缀,返回空字符串。输入不存在公共前缀。输入不存在公共前缀。
2024-03-26 16:47:51
241
原创 罗马数字转整数
数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。同样地,数字 9 表示为。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做。给定一个罗马数字,将其转换成整数。,即为两个并列的 1。
2024-03-25 21:44:01
936
1
原创 C语言-二叉树的最大深度
链接:https://leetcode.cn/problems/maximum-depth-of-binary-tree。给定二叉树 [3,9,20,null,null,15,7],二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。给定一个二叉树,找出其最大深度。来源:力扣(LeetCode)返回它的最大深度 3。
2022-10-01 23:04:01
798
原创 每日一题:对称二叉树
给你一个二叉树的根节点 root , 检查它是否轴对称。示例 1:输入:root = [1,2,2,3,4,4,3]输出:true示例 2:输入:root = [1,2,2,null,3,null,3]输出:false来源:力扣(LeetCode)链接:https://leetcode.cn/problems/symmetric-tree C语言python...
2022-07-04 22:50:07
259
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人