链表
D.Guan
怕什么真理无穷 进一步有进一步的欢喜
展开
-
[剑指offer][leetcode.142]环形链表II
题目给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是-1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1 输出:tail connects to node index 1...原创 2020-02-08 15:17:04 · 322 阅读 · 0 评论 -
[剑指offer][leetcode.141]环形链表
题目给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输出:...原创 2020-02-08 15:04:13 · 295 阅读 · 0 评论 -
[剑指offer][leetcode.160]相交链表
题目编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 ...原创 2020-02-08 01:40:45 · 211 阅读 · 0 评论 -
[剑指offer][Leetcode.234]回文链表
题目请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?分析判断一个链表是否为回文链表,首先需要找到中点,然后进行对比。于是,采用快慢指针找到中点。在找中点的时候,我们采用慢指针,边遍历边反转。当我...原创 2020-02-08 00:40:49 · 187 阅读 · 0 评论 -
[剑指offer][leetcode.92]反转链表II
题目反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL分析使用头插法进行反转,也就是不断地将需要反转的节点插在前面。为了方便,我们新建一个哨兵...原创 2020-02-07 20:21:06 · 121 阅读 · 0 评论 -
[剑指offer][leetcode.206]反转链表
题目反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?分析1.迭代反转对于一个没有头节点的链表进行反转:起码需要只要反转哪个节点(pcur)以及反转后指向哪个节点(pre)。迭代过程需要更...原创 2020-02-07 18:00:08 · 210 阅读 · 1 评论 -
[剑指offer][leetcode]面试22:链表中倒数第k个节点
题目输入一个链表,输出该链表中倒数第k个结点。分析类似于链表的中间节点,我们采用快慢指针通过遍历一次链表解决这个问题。我们要找的是倒数第k个节点,倒数第k个节点和最后一个节点距离是k-1。由此,如果快指针和慢指针相距k-1个节点,当快指针到达最后一个节点的时候,慢指针刚好到达倒数第k个节点。所以我们设立两个指针,快指针先走k-1步,然后两个指针同时开始走,当快指针到末尾的时候,慢指针到达...原创 2020-02-07 16:53:28 · 488 阅读 · 0 评论 -
[剑指offer][leetcode.876]链表的中间节点
题目给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。 示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ...原创 2020-02-07 16:21:09 · 279 阅读 · 0 评论 -
[剑指offer][leetcode.83]删除排序链表中的重复元素
题目给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3分析和移除链表元素同理,只是比较的是相邻元素。ListNode* deleteDuplicates(ListNode* head) {...原创 2020-02-06 18:56:03 · 151 阅读 · 0 评论 -
[剑指offer][leetcode.203]移除链表元素
题目删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5分析为了防止删除的是头节点,增加一个空的头节点,然后依次遍历就可以。如果当前节点是val,那么指向其的下一个节点。ListNode* removeElements(Li...原创 2020-02-06 18:51:25 · 141 阅读 · 0 评论 -
[剑指offer][leetcode.237]删除链表中的节点
题目请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为:示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 ...原创 2020-02-06 18:46:21 · 172 阅读 · 0 评论 -
[剑指offer][leetcode]面试题18:删除链表的节点
1. 在O(1)时间内删除链表节点给定一个单向链表的头指针和一个节点指针,定义一个函数在O(1)时间内删除该节点。首先定义一个结构体表示链表元素typedef struct ListNode* Link;//写一个包括链表结构的结构体struct ListNode{ int val; struct ListNode* next;};将链表元素存储在数组中...原创 2020-02-06 18:36:03 · 337 阅读 · 0 评论 -
[剑指offer][链表]面试题6:从尾到头打印链表
题目输入一个链表,按链表从尾到头的顺序返回一个ArrayList。分析从尾到头要求先遍历到的后面输出,也就是先进后出。所以我们使用栈来保存从前到后遍历的元素即可。 vector<int> printListFromTailToHead(ListNode* head) { //先进后出的思想 stack<int>s; ...原创 2020-01-30 19:50:48 · 139 阅读 · 0 评论 -
[leetcode][C++]两两交换链表中的节点
1.题目给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/swap-nodes-in-pai...原创 2019-09-19 22:18:15 · 271 阅读 · 0 评论