給定乙個單鏈表 l:l0→l1→…→ln-1→ln ,
將其重新排列後變為: l0→ln→l1→ln-1→l2→ln-2→…
你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。
示例 1:
給定鍊錶 1->2->3->4, 重新排列為 1->4->2->3.
示例 2:
給定鍊錶 1->2->3->4->5, 重新排列為 1->5->2->4->3.
解題思路:由於是鍊錶儲存,而鍊錶不能像陣列一樣直接用下標訪問,每次訪問時需要遍歷得到所需的位置結點。因此可以將鍊錶中的結點存放到陣列中去,然後利用雙指標(一頭一尾)進行結點交換。
**:
public
class
reorderlist
list
list =
newarraylist
<
>()
;/*將鍊錶的結點存放到陣列中*/
while
(head!=null)
/*頭尾指標*/
int i =
0, j = list.
size()
-1;while
(ilist.
get(j)
.next = list.
get(i)
; j--;}
list.
get(i)
.next = null;
}}
原地重排列表
在用python寫快速排序法時,需要選定陣列最後乙個數值,將小於等於它的放在左側,大於它的放在右側。其實方法很簡單,遍歷一邊陣列,將數值小於等於它的放到乙個陣列,大於它的放到另乙個陣列,最後以小於它的陣列,它,大於它的陣列合併。這樣做無疑是對的,但這樣過於浪費空間,為了設計更高效的演算法,我們本不需...
leetcode第143題 重排列表
給定乙個單鏈表 l l0 l1 ln 1 ln 將其重新排列後變為 l0 ln l1 ln 1 l2 ln 2 你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。示例 1 給定鍊錶 1 2 3 4,重新排列為 1 4 2 3.示例 2 給定鍊錶 1 2 3 4 5,重新排列為 1 5 2...
Python 列表 學習筆記
序列是python中基本資料結構。序列中每個元素都分配到乙個數字 它的位置或索引值 第一位索引值是0,第二位是1,以此類推。python有6個序列的內建型別,但最常見的是列表和元組。序列都可以進行的操作包括索引,切片,加,乘,檢查成員。此外,python已經內建確定序列的長度以及確定最大和最小的元素...