翻轉鍊錶 II

2022-03-23 04:00:38 字數 1297 閱讀 1379

翻轉鍊錶中第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 ...