
leetcode
文章平均质量分 54
kiki喜欢吃蛋糕
没有更新就是去吃蛋糕啦@^ - ^@
展开
-
LeetCode-94. 二叉树的中序遍历
关于递归:关于递归三要素:1.确定递归函数的参数和返回值:确定哪些参数是递归的过程中需要处理的,然后在递归函数里加上这个参数,并且确定每次递归的返回值是什么进而确定递归函数的返回值类型。2.确定终止条件:递归算法运行时经常会遇到栈溢出的错误。因为没写终止条件或者终止条件写的不对,如果递归没有终止,操作系统的内存栈必然就会溢出。3.确定单层递归的逻辑:确定每一层递归需要处理的信息,就会重复调用自己来实现递归的过程。对应此题:1.只需打印结点的数值,所以递归函数的返回类型就是void。2.递原创 2021-10-08 16:57:02 · 73 阅读 · 0 评论 -
LeetCode-*143.重排列表
重排链表给定一个单链表 L 的头节点 head ,单链表 L 表示为:L0 → L1 → … → Ln-1 → Ln请将其重新排列后变为:L0 → Ln → L1 → Ln-1 → L2 → Ln-2 → …不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:输入: head = [1,2,3,4]输出: [1,4,2,3]示例 2:输入: head = [1,2,3,4,5]输出: [1,5,2,4,3]提示:链表的长度范围为 [1, 5 * 104].原创 2021-10-01 09:37:52 · 129 阅读 · 0 评论 -
LeetCode-206.反转链表
示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]提示:链表中节点的数目范围是 [0, 5000]-5000 <= Node.val <= 5000进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?相当于将指向(箭头)倒置,很简单的思路。注意保存当前结点的next结点。/** * Definition for si原创 2021-09-30 21:55:11 · 118 阅读 · 0 评论 -
LeetCode-142.环形链表II
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表。进阶:你是否可以使用 O(1) 空间解决此题?示例 1:输入:head = [3,2,0,-4], pos = 1输出:返回索引为 1 的链表节点解释:链表中有一个环,其尾部连接原创 2021-09-26 10:06:55 · 114 阅读 · 0 评论 -
LeetCode-141.环形列表
给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。进阶:你能用 O(1)(即,常量)内存解决此问题吗?示例 1:输入:head = [3,2,0,-4], p原创 2021-09-22 20:43:09 · 91 阅读 · 0 评论 -
LeetCode-92*. 反转链表 II
给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。示例 1:输入:head = [1,2,3,4,5], left = 2, right = 4输出:[1,4,3,2,5]示例 2:输入:head = [5], left = 1, right = 1输出:[5]提示:链表中节点数目为 n1 <= n <= 500-500 <=原创 2021-09-20 10:36:43 · 101 阅读 · 0 评论 -
LeetCode-86.分隔链表
给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。你应当 保留 两个分区中每个节点的初始相对位置。示例 1:输入:head = [1,4,3,2,5,2], x = 3输出:[1,2,2,4,3,5]示例 2:输入:head = [2,1], x = 2输出:[1,2]分析:设置两个链表,一个放大于x值的结点,另一个放小于x值的结点,最后拼接。注意:循环条件到p为空时。代码:/** * Defi原创 2021-09-16 21:18:52 · 169 阅读 · 0 评论 -
LeetCode-82.删除排序链表中重复元素二
一.链栈的定义:和单链表一样,typedef struct Linknode{ int x; //数据域 struct Linknode *next; //指针域}*LiStack; //栈类型原创 2021-09-16 10:56:52 · 99 阅读 · 0 评论 -
LeetCode-24.两两交换链表中的结点
题目:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:输入:head = [1,2,3,4]输出:[2,1,4,3]示例 2:输入:head = []输出:[]示例 3:输入:head = [1]输出:[1]提示:链表中节点的数目在范围 [0, 100] 内0 <= Node.val <= 100进阶:你能在不修改链表节点值的情况下解决这个问题吗?(也就是说,仅修改节点本身。)分析原创 2021-09-13 21:58:42 · 86 阅读 · 0 评论 -
LeetCode-61.旋转链表
题目:给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。示例 1:输入:head = [1,2,3,4,5], k = 2输出:[4,5,1,2,3]示例 2:输入:head = [0,1,2], k = 4输出:[2,0,1]提示:链表中节点的数目在范围 [0, 500] 内-100 <= Node.val <= 1000 <= k <= 2 * 109分析:此题并不难,主要运用循环链表来解决。找到在什么地方断开,主要是一原创 2021-09-13 19:32:56 · 91 阅读 · 0 评论 -
LeetCode-2.两数相加
2.两数相加:给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例 3:输入:l1 = [9,9,9,9,9,9,原创 2021-09-08 21:14:36 · 102 阅读 · 0 评论 -
LeetCode-19.删除链表的倒数第N个结点
19.删除链表的倒数第N个结点给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗?示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1]提示:链表中结点的数目为 sz1 <= sz <= 300 <= Node.val <= 1001 <原创 2021-09-07 21:23:02 · 72 阅读 · 0 评论 -
LeetCode-21.合并两个有序链表
21.合并两个有序单链表:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]提示:两个链表的节点数目范围是 [0, 50]-100 <= Node.val <= 100l1 和 l2 均按 非递减顺序 排列思路:这是一道简单的题目,最优的方法是用递归解决。在这里贴出两种方法来参考:非递归:stru原创 2021-09-06 20:04:32 · 91 阅读 · 0 评论