随笔分类 -  算法

记录自己的刷题思路,刷题路线及复盘学习参考公众号:代码随想录
摘要:剑指Offer 22. 链表中倒数第k个节点 题目 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点 阅读全文
posted @ 2021-12-22 09:36 rananie 阅读(35) 评论(0) 推荐(0)
摘要:82.删除排序链表中的重复元素Ⅱ 题目 存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字。 返回同样按升序排列的结果链表。 示例 1: 输入:head = [1,2,3,3,4,4,5] 输出:[1,2,5] 阅读全文
posted @ 2021-12-21 22:20 rananie 阅读(42) 评论(0) 推荐(0)
摘要:143.重拍链表 题目 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → … → Ln - 1 → Ln 请将其重新排列后变为: L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … 不能只是单纯的改变节点内部的值,而是需要实际的进行节点交 阅读全文
posted @ 2021-12-20 11:23 rananie 阅读(60) 评论(0) 推荐(0)
摘要:328.奇偶链表 题目 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 **请尝试使用原地算法完成。**你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。 示例 1: 阅读全文
posted @ 2021-12-19 21:42 rananie 阅读(40) 评论(0) 推荐(0)
摘要:83.删除排序链表中的重复元素 题目 存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。 返回同样按升序排列的结果链表。 示例 1: 输入:head = [1,1,2] 输出:[1,2] 示例 2: 输入:head = [1,1,2,3,3 阅读全文
posted @ 2021-12-19 20:56 rananie 阅读(41) 评论(0) 推荐(0)
摘要:92.反转链表Ⅱ(链表内指定区间反转) 题目 给你单链表的头指针 head 和两个整数 left 和 right ,其中 left ⇐ right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。 示例 1: 输入:head = [1,2,3,4,5], left 阅读全文
posted @ 2021-12-16 16:07 rananie 阅读(156) 评论(0) 推荐(0)
摘要:234.回文链表 题目 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例1 输入:head = [1,2,2,1] 输出:true 示例2 输入:head = [1,2] 输出:false 进阶:你能否用 O(n) 时间复杂 阅读全文
posted @ 2021-12-15 16:15 rananie 阅读(55) 评论(0) 推荐(0)
摘要:148.排序链表 题目 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 进阶: 你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗? 示例 1: 输入:head = [4,2,1,3] 输出:[1,2,3,4] 示例 2: 输入:head = 阅读全文
posted @ 2021-12-13 16:18 rananie 阅读(53) 评论(0) 推荐(0)
摘要:23.合并K个升序链表 题目 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 1: 输入:lists = [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3,4,4,5,6] 解释:链表数组如下: [ 1->4->5, 阅读全文
posted @ 2021-12-09 11:13 rananie 阅读(246) 评论(0) 推荐(0)
摘要:445.两数相加Ⅱ 题目 给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只 阅读全文
posted @ 2021-12-07 12:46 rananie 阅读(62) 评论(0) 推荐(0)
摘要:160.相交链表 题目 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后,链表必须 保持其原始结构。 自定 阅读全文
posted @ 2021-12-06 09:55 rananie 阅读(39) 评论(0) 推荐(0)
摘要:19.删除链表的倒数第N个节点 题目 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2: 输入:head = [1], n = 1 输出:[] 示例 3: 输入:head = [1,2], 阅读全文
posted @ 2021-12-05 19:22 rananie 阅读(58) 评论(0) 推荐(0)
摘要:142.环形链表Ⅱ 题目 给定一个链表,返回链表开始入环的第一个节点。 从链表的头节点开始沿着 next 指针进入环的第一个节点为环的入口节点。如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1 阅读全文
posted @ 2021-12-03 11:37 rananie 阅读(31) 评论(0) 推荐(0)
摘要:141.环形链表 题目 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链 阅读全文
posted @ 2021-12-02 15:42 rananie 阅读(48) 评论(0) 推荐(0)
摘要:25.K个一组翻转链表 题目 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表的长度。 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。 进阶: 你可以设计一个只使用常数额外空间的算法来解决此问题吗? 你不能只是单纯的改变节 阅读全文
posted @ 2021-12-01 22:01 rananie 阅读(50) 评论(0) 推荐(0)
摘要:21.合并两个有序链表 题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4] 示例 2: 输入:l1 = [], l2 = [] 输出:[] 示 阅读全文
posted @ 2021-11-29 11:49 rananie 阅读(134) 评论(0) 推荐(0)
摘要:206.反转链表 题目 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 要求:空间复杂度 O(1) ,时间复杂度 O(n) 示例 1: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head = [1,2] 输出:[2,1] 示例 3 阅读全文
posted @ 2021-11-26 12:35 rananie 阅读(64) 评论(0) 推荐(0)
摘要:458.可怜的小猪 题目 有 buckets 桶液体,其中 正好 有一桶含有毒药,其余装的都是水。它们从外观看起来都一样。为了弄清楚哪只水桶含有毒药,你可以喂一些猪喝,通过观察猪是否会死进行判断。不幸的是,你只有 minutesToTest 分钟时间来确定哪桶液体是有毒的。 喂猪的规则如下: 选择若 阅读全文
posted @ 2021-11-25 22:17 rananie 阅读(35) 评论(0) 推荐(0)
摘要:821. 字符的最短距离 题目 给你一个字符串 s 和一个字符 c ,且 c 是 s 中出现过的字符。 返回一个整数数组 answer ,其中 answer.length == s.length 且 answer[i] 是 s 中从下标 i 到离它 最近 的字符 c 的 距离 。 两个下标 i 和 阅读全文
posted @ 2021-11-23 21:08 rananie 阅读(72) 评论(0) 推荐(0)
摘要:66.加一 题目 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例 1: 输入:digits = [1,2,3] 输出:[1,2,4] 解释:输入数组表 阅读全文
posted @ 2021-11-22 16:49 rananie 阅读(53) 评论(0) 推荐(0)