链表内指定区间反转
将一个链表m位置到n位置之间的区间反转,要求时间复杂度 ,空间复杂度 。
例如:
给出的链表为1→2→3→4→5→NULL,
返回1→4→3→2→5→NULL.
注意:
给出的m,n满足以下条件:
链表长度1≤m≤n≤链表长度
/* * function ListNode(x){ * this.val = x; * this.next = null; * } */ /** * * @param head ListNode类 * @param m int整型 * @param n int整型 * @return ListNode类 */ function reverseBetween( head , m , n ) { // write code here var top = {} top.next = head var pre = top var cur = head for(var i=0;i<m-1;i++){ pre = pre.next cur = cur.next } for(var j=0;j<n-m;j++){ var temp = cur.next cur.next = temp.next temp.next = pre.next pre.next = temp } return top.next } module.exports = { reverseBetween : reverseBetween };
链表算法 文章被收录于专栏
链表相关算法