JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

LeetCode算法第92题:反转链表 II 反转链表的思路

wys521 2024-11-02 14:57:57 精选教程 23 ℃ 0 评论

题目描述:

反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。

说明:

1 ≤ m ≤ n ≤ 链表长度。

示例:

输入: 1->2->3->4->5->NULL, m = 2, n = 4

输出: 1->4->3->2->5->NULL

思路:

这道题目要求反转从位置 m 到 n 的链表,可以分为 3 部来进行:

1、将链表顺序遍历到位置 m 位置处;

2、将链表从位置 m 到 n 的节点进行反转,反转方式为定义一个临时链表,将需要反转的节点插入临时链表的位置 0 处;

3、将链表位置 n 以后的节点链接到反转链表的尾部

Java代码:

public ListNode reverseBetween(ListNode head, int m, int n) {

ListNode result = new ListNode(-1);

result.next = head;

ListNode temp = result;

int i = 1;

while(i < m && null != temp){

temp = temp.next;

i++;

}

temp.next = swap(temp.next,n-m+1);

return result.next;

}

private ListNode swap(ListNode head, int len){

ListNode result = new ListNode(-1);

int i = 0;

while(i < len && null != head){

ListNode temp = head;

head = head.next;

temp.next = result.next;

result.next = temp;

i++;

}

ListNode temp = result;

while(null != temp.next){

temp = temp.next;

}

temp.next = head;

return result.next;

}

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表