Reverse Linked List II | Java最短代码实现

来源:互联网 发布:linux nobody 用户 编辑:程序博客网 时间:2024/06/07 00:52
原题链接:92. Reverse Linked List II

【思路】

链表的基本操作,首先申请一个mPre节点,其下一个节点指向head。其次,在第一个while循环中完成:

1.找到m节点mNode(即mPre.next)

2.找到n节点nNode

第二个while循环中完成:

1.从mNode到nNode的反转

当m = 1时,返回nNode,否则返回head:

    public ListNode reverseBetween(ListNode head, int m, int n) {        ListNode mPre = new ListNode(0);        mPre.next = head;        ListNode nNode = head;        int moveStep = 0;        while (++moveStep < n) {            if (moveStep < m)                mPre = mPre.next;            nNode = nNode.next;        }        ListNode mNode = mPre.next;        while (mNode != nNode) {            ListNode mNext = mNode.next;            mNode.next = nNode.next;            nNode.next = mNode;            mNode = mNext;        }        mPre.next = nNode;        return m == 1 ? nNode : head;    }
欢迎优化!

1 0
原创粉丝点击