您的位置:首页 > 汽车 > 新车 > 山东泰安疫情最新消息_企业vi怎么设计_百度站长资源_电商线上推广渠道

山东泰安疫情最新消息_企业vi怎么设计_百度站长资源_电商线上推广渠道

2025/3/13 18:17:37 来源:https://blog.csdn.net/weixin_44575660/article/details/146213973  浏览:    关键词:山东泰安疫情最新消息_企业vi怎么设计_百度站长资源_电商线上推广渠道
山东泰安疫情最新消息_企业vi怎么设计_百度站长资源_电商线上推广渠道

876. 链表的中间结点

给你单链表的头结点 head ,请你找出并返回链表的中间结点。

如果有两个中间结点,则返回第二个中间结点。

示例 1:
在这里插入图片描述

输入:head = [1,2,3,4,5]
输出:[3,4,5]
解释:链表只有一个中间结点,值为 3 。
示例 2:
在这里插入图片描述

输入:head = [1,2,3,4,5,6]
输出:[4,5,6]
解释:该链表有两个中间结点,值分别为 3 和 4 ,返回第二个结点。

提示:

链表的结点数范围是 [1, 100]
1 <= Node.val <= 100

/*** Definition for singly-linked list.* type ListNode struct {*     Val int*     Next *ListNode* }*/
func middleNode(head *ListNode) *ListNode {slow,fast:=head,headfor fast!=nil&&fast.Next!=nil{fast=fast.Next.Nextslow=slow.Next}return slow
}

141. 环形链表

给你一个链表的头节点 head ,判断链表中是否有环。

如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。

如果链表中存在环 ,则返回 true 。 否则,返回 false 。

示例 1:

在这里插入图片描述

输入:head = [3,2,0,-4], pos = 1
输出:true
解释:链表中有一个环,其尾部连接到第二个节点。
示例 2:
在这里插入图片描述

输入:head = [1,2], pos = 0
输出:true
解释:链表中有一个环,其尾部连接到第一个节点。
示例 3:

在这里插入图片描述

输入:head = [1], pos = -1
输出:false
解释:链表中没有环。

提示:

链表中节点的数目范围是 [0, 104]
-105 <= Node.val <= 105
pos 为 -1 或者链表中的一个 有效索引 。

进阶:你能用 O(1)(即,常量)内存解决此问题吗?

/*** Definition for singly-linked list.* type ListNode struct {*     Val int*     Next *ListNode* }*/
func hasCycle(head *ListNode) bool {fast,slow:=head,headfor fast!=nil&&fast.Next!=nil{fast=fast.Next.Nextslow=slow.Nextif slow==fast{return true}}return false
}

143. 重排链表

给定一个单链表 L 的头节点 head ,单链表 L 表示为:

L0 → L1 → … → Ln - 1 → Ln
请将其重新排列后变为:

L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → …
不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

示例 1:

在这里插入图片描述

输入:head = [1,2,3,4]
输出:[1,4,2,3]
示例 2:
在这里插入图片描述

输入:head = [1,2,3,4,5]
输出:[1,5,2,4,3]

提示:

链表的长度范围为 [1, 5 * 104]
1 <= node.val <= 1000

/*** Definition for singly-linked list.* type ListNode struct {*     Val int*     Next *ListNode* }*/
func middleNode(head *ListNode)*ListNode{fast,slow:=head,headfor fast!=nil&&fast.Next!=nil{fast=fast.Next.Nextslow=slow.Next}return slow
}
func reverse(head *ListNode)*ListNode{var pre,cur *ListNode=nil,headfor cur!=nil{tmp:=cur.Nextcur.Next=prepre=curcur=tmp}return pre
}
func reorderList(head *ListNode)  {mid:=middleNode(head)head2:=reverse(mid)for head2.Next!=nil{nxt:=head.Nextnxt2:=head2.Nexthead.Next=head2head2.Next=nxthead=nxthead2=nxt2}
}

234. 回文链表

给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。

示例 1:

在这里插入图片描述

输入:head = [1,2,2,1]
输出:true
示例 2:

在这里插入图片描述

输入:head = [1,2]
输出:false

提示:

链表中节点数目在范围[1, 105] 内
0 <= Node.val <= 9

进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?

/*** Definition for singly-linked list.* type ListNode struct {*     Val int*     Next *ListNode* }*/
func middleNode(head *ListNode)*ListNode{fast,slow:=head,headfor fast!=nil&&fast.Next!=nil{fast=fast.Next.Nextslow=slow.Next}return slow
}
func reverse(head *ListNode)*ListNode{var pre,cur *ListNode=nil,headfor cur!=nil{tmp:=cur.Nextcur.Next=prepre=curcur=tmp}return pre
}
func isPalindrome(head *ListNode) bool {mid:=middleNode(head)head2:=reverse(mid)for head!=nil&&head2!=nil{if head.Val!=head2.Val{return false}head=head.Nexthead2=head2.Next}return true
}   

2130. 链表最大孪生和

在一个大小为 n 且 n 为 偶数 的链表中,对于 0 <= i <= (n / 2) - 1 的 i ,第 i 个节点(下标从 0 开始)的孪生节点为第 (n-1-i) 个节点 。

比方说,n = 4 那么节点 0 是节点 3 的孪生节点,节点 1 是节点 2 的孪生节点。这是长度为 n = 4 的链表中所有的孪生节点。
孪生和 定义为一个节点和它孪生节点两者值之和。

给你一个长度为偶数的链表的头节点 head ,请你返回链表的 最大孪生和 。

示例 1:

在这里插入图片描述

输入:head = [5,4,2,1]
输出:6
解释:
节点 0 和节点 1 分别是节点 3 和 2 的孪生节点。孪生和都为 6 。
链表中没有其他孪生节点。
所以,链表的最大孪生和是 6 。
示例 2:
在这里插入图片描述

输入:head = [4,2,2,3]
输出:7
解释:
链表中的孪生节点为:

  • 节点 0 是节点 3 的孪生节点,孪生和为 4 + 3 = 7 。
  • 节点 1 是节点 2 的孪生节点,孪生和为 2 + 2 = 4 。
    所以,最大孪生和为 max(7, 4) = 7 。
    示例 3:

在这里插入图片描述

输入:head = [1,100000]
输出:100001
解释:
链表中只有一对孪生节点,孪生和为 1 + 100000 = 100001 。

提示:

链表的节点数目是 [2, 105] 中的 偶数 。
1 <= Node.val <= 105

/*** Definition for singly-linked list.* type ListNode struct {*     Val int*     Next *ListNode* }*/
func middleNode(head *ListNode)*ListNode{fast,slow:=head,headfor fast!=nil&&fast.Next!=nil{fast=fast.Next.Nextslow=slow.Next}return slow
}
func reverse(head *ListNode)*ListNode{var pre,cur *ListNode=nil,headfor cur!=nil{tmp:=cur.Nextcur.Next=prepre=curcur=tmp}return pre
}
func pairSum(head *ListNode) int {mid:=middleNode(head)head2:=reverse(mid)ans:=0for head2!=nil{ans=max(ans,head2.Val+head.Val)head=head.Nexthead2=head2.Next}return ans
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com