• leetcode--Reverse Linked List II


    Reverse a linked list from position m to n. Do it in-place and in one-pass.

    For example:
    Given 1->2->3->4->5->NULLm = 2 and n = 4,

    return 1->4->3->2->5->NULL.

    Note:
    Given mn satisfy the following condition:
    1 ≤ m ≤ n ≤ length of list.

    public class Solution {
        /**
    	 * The algorithm is straightforward. We first move one pointer to the m-th node of
    	 * the list and then reverse the links of the following n - m nodes;
    	 * @param head  --ListNode, the head node of a linked list
    	 * @param m --int, the start nodes
    	 * @param n --int, the ending nodes
    	 * @return  ListNode --head of the new linked list
    	 * @author Averill Zheng
    	 * @version 2014-06-12
    	 * @since JDK 1.7
    	 */
        public ListNode reverseBetween(ListNode head, int m, int n) {
            ListNode newHead = new ListNode(0);
    		newHead.next = head;
    		ListNode previous = null;;
    		ListNode firstNode = newHead;
    		int i = 0;
    		while(i < m){
    			previous = firstNode;
    			firstNode = firstNode.next;
    			++i;
    		}
    		
    		//remember previous.next = firstNode;
    		ListNode current = firstNode.next;
    		ListNode tail = null;
    		int j = 0;
    		while(j < n - m){
    			tail = firstNode;
    			firstNode = current;
    			current = current.next;
    			firstNode.next = tail;
    			++j;
    		}
    	
    		previous.next.next = current;
    		previous.next = firstNode;
    		newHead = newHead.next;
    		return newHead;
        }
    }
    

      

  • 相关阅读:
    PHP实现微信退款的分析与源码实现
    thinkphp对180万数据批量更新支持事务回滚
    在线工具
    php连接redis
    Redis PHP连接操作
    阿里大于短信接口整合TP5
    Unity3d中如何查找一个脚本被挂在那些预设上面?
    泰课在线夜猫的贪食蛇
    EasyTouch5ForSiki学院
    unity游戏热更新
  • 原文地址:https://www.cnblogs.com/averillzheng/p/3787759.html
Copyright © 2020-2023  润新知