
链表
leetcode 链表
三Ⅶ
这个作者很懒,什么都没留下…
展开
-
leetcode 24
方法一 迭代class Solution {public: ListNode* swapPairs(ListNode* head) { if(!head||!head->next) { return head; } ListNode*pre=new ListNode(0,head); ListNode*a=pre; while(a->next&.原创 2021-11-21 13:15:01 · 83 阅读 · 0 评论 -
203. 移除链表元素
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。两种思路:第一种迭代:依次遍历每个元素class Solution {public: ListNode* removeElements(ListNode* head, int val) { while(head!=NULL&&head->val==val) { ListNo原创 2021-06-05 10:45:47 · 82 阅读 · 0 评论 -
leetcode160. 相交链表
编写一个程序,找到两个单链表相交的起始节点。解题思路:双指针把,并把两链表头尾进行相连,同时移动,相遇节点则为相交节点。图解:红色代表a节点,黄色代表c节点此时a=b跳出循环,返回aclass Solution {public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { if(headA==NULL||headB==NULL) {原创 2021-06-02 20:20:19 · 154 阅读 · 0 评论 -
141. 环形链表
给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。解题思路:双指针(快慢指针),设定一个快指针,一个慢指针,如果链表中存在环的话,那么两个指针一定会相遇(类似于追击原创 2021-06-01 13:55:27 · 157 阅读 · 1 评论 -
leetcode206反转链表
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表示例一:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例二:输入:head = [1,2]输出:[2,1]思路一:迭代(对每个点依次进行处理)简图便于理解class Solution {public: ListNode* reverseList(ListNode* head) { ListNode* prev = nullptr; ListNode* cur原创 2021-06-01 13:29:42 · 101 阅读 · 0 评论 -
2. 两数相加
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 1:输入:l1 = [0], l2 = [0]输出:[0]示例2:输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]输出:[8,9,9,9,0,0,0,1]题解代码:主要是一个模拟的过程,注意对齐补零以及进一即可class So原创 2021-05-31 23:39:02 · 80 阅读 · 0 评论 -
面试题 02.02. 返回倒数第 k 个节点
实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。注意:本题相对原题稍作改动示例:输入: 1->2->3->4->5 和 k = 2输出: 4emmmmm这道题就很平淡,类似于双指针的一个大体思路,先求出链表元素总数l再进行l-k次遍历得到链表倒数第k个节点的值。class Solution {public: int kthToLast(ListNode* head, int k) { ListNode*p=head;原创 2021-05-31 23:28:52 · 196 阅读 · 5 评论 -
328. 奇偶链表
给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5->2->4->NULL示例 2:输入: 2->1->3->5->6->4-&原创 2021-05-31 17:04:58 · 90 阅读 · 0 评论