- 1
- 0
- 约7.9千字
- 约 19页
- 2026-05-19 发布于未知
- 举报
程序员试题试题及答案
一、数据结构与算法
1.题目:给定单链表头节点head和整数m、n(1≤m≤n≤链表长度),要求反转链表中第m到第n个节点(包含m和n),返回反转后的链表头节点。
示例:输入head=[1→2→3→4→5],m=2,n=4,输出应为[1→4→3→2→5]。
答案:
解题思路:需定位到第m-1个节点(前驱节点),反转m到n节点,再连接前驱节点和反转后的头节点,以及反转后的尾节点和原n+1节点。
步骤:
-创建哑节点dummy(避免处理头节点特殊情况),dummy.next=head。
-找到前驱节点pre(第m-1个节点):通过循环m-1次移动指针。
-定义当前节点cur=pre.next(第m个节点),记录反转后的尾节点tail=cur(反转后变为第n个节点)。
-反转m到n节点:循环n-m次,每次将cur.next指向的节点(即next节点)插入到pre.next位置,完成局部反转。
-最终返回dummy.next。
代码实现(Python):
```python
classListNode:
def__init__(self,val=0,next=None):
self.val=val
self.next=next
原创力文档

文档评论(0)