摘要: 问题 给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你应当 保留 两个分区中每个节点的初始相对位置。 示例 解答 class Solution { public: ListNode* partition(Li 阅读全文
posted @ 2021-03-27 13:17 tmpUser 阅读(50) 评论(0) 推荐(0) 编辑
摘要: 问题 对链表进行插入排序。 插入排序算法: 插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表; 每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入; 重复直到所有输入数据插入完为止。 解答 class Solution { pub 阅读全文
posted @ 2021-03-27 13:10 tmpUser 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 问题 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。 示例 输入: 1->2->3->4- 阅读全文
posted @ 2021-03-27 12:22 tmpUser 阅读(50) 评论(0) 推荐(0) 编辑
摘要: 问题 给定一个单链表 L:L0→L1→…→Ln-1→Ln , 将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→… 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例 给定链表 1->2->3->4, 重新排列为 1->4->2->3。 解答 class Solut 阅读全文
posted @ 2021-03-27 12:17 tmpUser 阅读(29) 评论(0) 推荐(0) 编辑
摘要: 问题 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 示例 输入: head = [-1,5,3,4,0] 输出: [-1,0,3,4,5] 解答1:归并排序 class Solution { public: ListNode* sortList(ListNode* he 阅读全文
posted @ 2021-03-27 12:10 tmpUser 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 问题 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 输入: lists = [[1,4,5],[1,3,4],[2,6]] 输出: [1,1,2,3,4,4,5,6] 解答1:归并排序 class Solution { public: L 阅读全文
posted @ 2021-03-27 12:02 tmpUser 阅读(37) 评论(0) 推荐(0) 编辑
摘要: 问题 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 示例 输入: head = [1,2,3,4,5], k = 2 输出: [4,5,1,2,3] 解答 class Solution { public: ListNode* rotateRight(ListNod 阅读全文
posted @ 2021-03-27 11:46 tmpUser 阅读(45) 评论(0) 推荐(0) 编辑