![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode链表
进击的CV
一起聊聊图像处理
展开
-
leetcode-链表-138. 复制带随机指针的链表
给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的深拷贝。示例:输入:{"$id":"1","next":{"$id":"2","next":null,"random":{"$ref":"2"},"val":2},"random":{"$ref":"2"},"val":1}解释:节点 1 的值是 1,它的下一个指针和随机指针都指向节点 2 。节点 2 的值是 2,它的下一个指针指向 null,随机指针指向...原创 2020-06-19 21:33:16 · 160 阅读 · 0 评论 -
leetcode-链表-109. 有序链表转换二叉搜索树
给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。示例:给定的有序链表: [-10, -3, 0, 5, 9],一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / /-10 5思路分析可以理解为根据中序遍历翻转出原二叉树,因为链表是有序的,故必...原创 2020-06-19 21:27:14 · 156 阅读 · 0 评论 -
leetcode-链表-92. 反转链表 II
反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤m≤n≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL对于链表的问题,根据以往的经验一般都是要建一个dummy node,连上原链表的头结点,这样的话就算头结点变动了,我们还可以通过dummy->next来获得新链表的头结点。这道题的要求是只通过一次遍历完成,...原创 2020-06-19 21:24:59 · 137 阅读 · 0 评论 -
leetcode-链表-86. 分隔链表
给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例:输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5思路一:不改变指针域,只调换数据域。即不变位置,只变存储位置的值。这个思路中我利用了栈顶弹出压入的快捷性。这个思路代码很清晰,时间复杂度较好,但空间复杂度较差。给定.原创 2020-06-19 21:22:24 · 137 阅读 · 0 评论 -
leetcode-链表-83. 删除排序链表中的重复元素
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例1:输入: 1->1->2输出: 1->2示例2:输入: 1->1->2->3->3输出: 1->2->3解法1:双指针法class Solution {public: ListNode* deleteDuplicates(ListNode* head) { if(head==NULL||head->next==NULL..原创 2020-06-19 21:19:19 · 114 阅读 · 0 评论 -
leetcode-链表-82. 删除排序链表中的重复元素 II
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中没有重复出现的数字。示例1:输入: 1->2->3->3->4->4->5输出: 1->2->5示例2:输入: 1->1->1->2->3输出: 2->3/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNod...原创 2020-06-19 21:15:29 · 91 阅读 · 0 评论 -
leetcode-链表-61. 旋转链表
61. 旋转链表给定一个链表,旋转链表,将链表每个节点向右移动k个位置,其中k是非负数。示例1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: 4->5->1->2->3->NULL示例2:输入: 0->1-...原创 2020-06-19 21:13:01 · 128 阅读 · 0 评论 -
leetcode-链表-25.k个一组翻转链表
暂时没想好。。。原创 2020-06-18 23:41:43 · 76 阅读 · 0 评论 -
leetcode-链表-24.两两交换链表中的节点
解答1思路:使用一个虚拟节点dummy,其next指针指向头节点:ListNode* dummy = new ListNode(0); dummy->next = head;定义三个ListNode*指针:pre、cur、next举例说明:1->2->3->4通过创建虚拟节点dummy,链表为 0->1->2->3->4初始:pre = dummy(值为0),cur = head(值为1), next = cur->n...原创 2020-06-18 23:39:13 · 116 阅读 · 0 评论 -
leetcode-链表-23.合并k个排序链表
C++版/** * Merge k Sorted Lists * 合并K个排序链表*/#include <stdio.h>#include <stdlib.h>#include <time.h>#include <iostream>#include <vector>using namespace std;struct ListNode { int val; ListNode *next; L..原创 2020-06-18 14:21:04 · 129 阅读 · 0 评论 -
leetcode-链表-21.合并 两个有序链表
方法 1:递归class Solution {public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if(l1 == NULL) return l2; else if (l2 == NULL) return l1; else if (l1->val < l2->val) { l1->next = mergeTwoL..原创 2020-06-17 22:04:08 · 104 阅读 · 0 评论 -
leetcode-链表-19.删除链表的倒数第N个节点
class Solution {public: ListNode* removeNthFromEnd(ListNode* head, int n) { int count=0;//存放链表长度 ListNode *p=head; while(p)//计算链表长度 { count++; p=p->next; } p=head; ...原创 2020-06-17 21:51:09 · 104 阅读 · 0 评论 -
leetcode-链表-2.两数相加
C++版/** * Add Two Numbers * 两数相加*/class Solution { public: ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) { int x=0, y=0, carry=0, sum=0; ListNode *h=NULL, **t=&h; while (l1!=NULL || l2!=NULL)..原创 2020-06-17 21:46:28 · 123 阅读 · 0 评论