首页 > 代码库 > [leetcode]Reverse Linked List II
[leetcode]Reverse Linked List II
问题描述:
Reverse a linked list from position m ton. Do it in-place and in one-pass.
For example:
Given 1->2->3->4->5->NULL
, m = 2 and n = 4,
return 1->4->3->2->5->NULL
.
Note:
Given m, n satisfy the following condition:
1 ≤ m ≤ n ≤ length of list.
基本思路:
思路很简单,翻转链表注意指针的指向即可。
代码:
public ListNode reverse(ListNode head,int n) //Java { ListNode tmp = head; int step = 1; tmp = tmp.next; ListNode tmphead = head; ListNode p = null; ListNode pre = head; while(step < n){ p = tmp.next; tmp.next = head; head = tmp; pre.next = p; // head.next = null; tmp = p; step++; } tmphead.next = p; return head; } public ListNode reverseBetween(ListNode head, int m, int n) { if(head == null || head.next == null || m==n) return head; ListNode result = new ListNode(0); result.next = head; ListNode p = head; ListNode pre =result; int pos = 1; while(pos != m){ pre = p; p = p.next; pos++; } ListNode tmphead = reverse(p, n-m+1); pre.next = tmphead; return result.next; }
[leetcode]Reverse Linked List II
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。