链表
BananaScript
上至前后端人工智能,下至嵌入式树莓派,无所不能的IT全栈
展开
-
【leetcode/链表】删除链表倒数底n个元素(双指针技巧)
问题描述:给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n保证是有效的。进阶:你能尝试使用一趟扫描实现吗?基本思路:搞一双指针,一开始就差n个节点,然后...原创 2019-10-17 14:55:14 · 109 阅读 · 0 评论 -
【leetcode/链表】两数相加(水题)
问题描述:两数相加给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输...原创 2019-10-17 14:49:08 · 100 阅读 · 0 评论 -
【leetcode/链表】扁平化多级双向链表(双链表中插入双链表)
问题描述:您将获得一个双向链表,除了下一个和前一个指针之外,它还有一个子指针,可能指向单独的双向链表。这些子列表可能有一个或多个自己的子项,依此类推,生成多级数据结构,如下面的示例所示。扁平化列表,使所有结点出现在单级双链表中。您将获得列表第一级的头部。示例:输入: 1---2---3---4---5---6--NULL | 7---8...原创 2019-10-16 22:37:30 · 118 阅读 · 0 评论 -
【leetcode/链表】旋转链表(水题)
问题描述:给定一个链表,旋转链表,将链表每个节点向右移动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 步:...原创 2019-10-16 19:56:14 · 94 阅读 · 0 评论 -
【leetcode/链表】复制带随机指针的链表(复制链表+建立链表关系)
问题描述:复制带随机指针的链表给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的深拷贝。示例:输入:{"$id":"1","next":{"$id":"2","next":null,"random":{"$ref":"2"},"val":2},"random":{"$ref":"2"},"val":1}...原创 2019-10-16 19:26:34 · 93 阅读 · 0 评论 -
【leetcode/链表】合并两个有序链表(链表节点的移动)
问题描述:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解题思路:假设节点都插入到第一个链表。以第二个链表首节点为对象,在第一个链表中查找第一个比他大的数字,插到它前面。当然,如果没有的话,...原创 2019-10-16 08:48:50 · 107 阅读 · 0 评论 -
【leetcode/链表】回文链表(翻转链表+无环链表的快慢指针)
问题描述:请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用O(n) 时间复杂度和 O(1) 空间复杂度解决此题?基本思想:这个咱也不说了,反正也不是咱自己想的。。先用快慢指针扫描到链表的中间部分(快慢指针初始化为什么节点请自己分析...原创 2019-10-15 23:15:18 · 125 阅读 · 0 评论 -
【leetcode/链表】奇偶链表(拆分链表)
题目描述:给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->...原创 2019-10-15 23:10:36 · 1604 阅读 · 0 评论 -
【leetcode/链表】移除链表元素(删除节点+NULL判断)
问题描述:删除链表中等于给定值val的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5基本思路:这个无非就是删除链表节点,之前讲的博文恐怕有误,这里提一下删除节点的两种情况:①遇到符合要求的节点,删除——这时候我们需要该节点的前继节点才能删除。...原创 2019-10-15 20:22:14 · 247 阅读 · 0 评论 -
【leetcode/链表】反转链表(反转链表)
问题描述:反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?思路:链表虽然说不能做到随机访问,但是把所有节点插到链表首部还是可以的,这时候你需要一个指向链表首部的指针。 单链表插入某...原创 2019-10-15 19:51:23 · 137 阅读 · 0 评论 -
【leetcode/链表】相交链表(双指针)
问题描述:编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 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输入解...原创 2019-10-15 08:03:43 · 216 阅读 · 0 评论 -
【leetcode/链表】环形链表(快慢指针的应用)
问题描述:给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例2:输入:head = [1,2], p...原创 2019-10-14 23:01:23 · 93 阅读 · 0 评论