题解 | #链表内指定区间反转#

链表内指定区间反转

http://www.nowcoder.com/practice/b58434e200a648c589ca2063f1faf58c

import java.util.*;

/*

  • public class ListNode {
  • int val;
  • ListNode next = null;
  • } */ // class ListNode{ // int val; // ListNode next; // ListNode(int val,ListNode next){ // this.val = val; // this.next = next; // } // }

public class Solution { /** * * @param head ListNode类 * @param m int整型 * @param n int整型 * @return ListNode类 */ public ListNode reverseBetween (ListNode head, int m, int n) { //使用虚拟头结点避免m=0的情况 ListNode dummy = new ListNode(0); dummy.next = head; ListNode pre = dummy; int idx = 1; //让头结点移动到待进行偏转的前一个节点 while(idx < m){ pre = pre.next; idx++; } //每次记录要反转节点的当前节点以及下一个节点 ListNode cur = pre.next; ListNode next = cur.next; while(idx<n){ //使用临时节点保存下一个节点 避免指针改变后丢失next节点 ListNode tmp = next.next; next.next = cur; cur = next; next = tmp; idx++; } pre.next.next = next; pre.next = cur; return dummy.next; } }

全部评论

相关推荐

Noel_:中石油是这样的 哥们侥幸混进免笔试名单 一看给我吓尿了
点赞 评论 收藏
分享
一颗宏心:华为HR晚上过了十二点后还给我法消息。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务