
链表
链表
低头看天,抬头走路
句句都是正确的废话,招招都是致命的空招。
展开
-
leetcode21. 合并两个有序链表
题目 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 思路 不需要构造新的链表节点 实现 /** * Definition for singly-linked list. * struct ListNode ...原创 2019-07-08 23:01:26 · 143 阅读 · 0 评论 -
leetcode24. 两两交换链表中的节点
题目 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例: 给定 1->2->3->4, 你应该返回 2->1->4->3. 思路 1.递归 2.建立虚拟头结点(为了不对head进行特殊处理) 实现 class Solution { public: ListNode* swap...原创 2019-07-14 20:58:18 · 165 阅读 · 0 评论 -
leetcode19. 删除链表的倒数第N个节点
题目 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是有效的。 思路 1.双指针 2为了便于操作,建立虚拟头结点 实现 class Solution { public: L...原创 2019-07-22 23:00:11 · 165 阅读 · 0 评论 -
leetcode160. 相交链表
题目 编写一个程序,找到两个单链表相交的起始节点。 注意: 如果两个链表没有交点,返回 null. 在返回结果后,两个链表仍须保持原有的结构。 可假定整个链表结构中没有循环。 程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。 思路 先移动较长的链表,让其和较短的链表保持相同长度 实现 /** * Definition for singly-linked list. * struc...原创 2019-08-05 00:25:15 · 102 阅读 · 0 评论 -
leetcode147. 对链表进行插入排序
题目 插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。 每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。 重复直到所有输入数据插入完为止。 实现 /** * Definition for singly-linked list. * struct ListNode { * int val; * Li...原创 2019-08-30 17:24:20 · 123 阅读 · 0 评论 -
leetcode92. 反转链表 II
题目 反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。 说明: 1 ≤ m ≤ n ≤ 链表长度。 示例: 输入: 1->2->3->4->5->NULL, m = 2, n = 4 输出: 1->4->3->2->5->NULL 思路 与反转链表类似,单要注意边界条件 leetcode92. 反转链表 II 实现 /** * Definition for singly-linked list. * struct ListNode {原创 2020-12-07 13:23:26 · 231 阅读 · 0 评论 -
leetcode206 反转链表
题目 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题? 思路 1.链表的问题注意画出草稿图,理清楚指针的操作步骤就可以了 2.写递归程序最重要是把调用函数当做已经执行完了的返回值,然后需要做的后续工作,...原创 2019-08-05 00:09:56 · 128 阅读 · 0 评论