翻轉鍊錶中第m個節點到第n個節點的部分
注意事項
m,n滿足1 ≤ m ≤ n ≤ 鍊錶長度
樣例給出鍊錶1->2->3->4->5->null, m = 2 和n = 4,返回1->4->3->2->5->null
只需要翻轉其中一部分
根據結點值進行更新鍊錶
時間複雜度:o(n)
空間複雜度:o(n)
/*** definition for listnode
* public class listnode
* }*/public class solution
// 記錄需要翻轉的結點值
arraylist val = new arraylist();
listnode q = p;
while(i<=n && q!=null)
// 根據結點值更新原始鍊錶
for( i=val.size()-1;i >=0;i--)
return head;
}public int getlength(listnode head)
return len;
}}上面違背了出題思想
下面找到翻轉位置後進行翻轉
參考鏈結
public class solution
listnode dummy = new listnode(0); // 插入頭節點
dummy.next = head;
head = dummy;
for (int i = 1; i < m; i++)
head = head.next;
}listnode premnode = head; // m 前節點
listnode mnode = head.next; // m 節點
listnode nnode = mnode;// n節點
listnode postnnode = mnode.next; // n 後節點
// n 後節點 插入到n 節點之前
for (int i = m; i < n; i++)
listnode temp = postnnode.next; // 下乙個節點
postnnode.next = nnode;
nnode = postnnode;
postnnode = temp;
}mnode.next = postnnode;// m next 指向 n 後
premnode.next = nnode; // m 前節點 直線 n
return dummy.next;}}
LintCode 36(翻轉鍊錶 II)
lintcode系列,第36題,題目 翻轉鍊錶中第m個節點到第n個節點的部分,m,n滿足1 m n 鍊錶長度。樣例 例1 輸入 1 2 3 4 5 null,m 2 and n 4,輸出 1 4 3 2 5 null.例2 輸入 1 2 3 4 null,m 2 and n 3,輸出 1 3 2 4...
LeetCode系列 翻轉鍊錶問題II
給定乙個鍊錶和兩個整數m,n,翻轉鍊錶第m個節點到第n個節點 從1開始計數 如,給定鍊錶 1 2 3 4 5 null,以及 m 2,n 4.返回 1 4 3 2 5 null.假定m和n滿足約束條件 1 m n 鍊錶長度.注意 不能使用額外空間,且只能遍歷鍊錶一次.演算法思路 翻轉的過程可以分解成...
鍊錶 環形鍊錶 II
給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。如果鍊錶無環,則返回null。說明 不允許修改給定的鍊錶。高階 你是否可以不用額外空間解決此題?definition for singly linked list.class listnode public class solution start p1 ...