重排列表(學習筆記2020 10 20)

2021-10-25 00:24:50 字數 786 閱讀 8808

給定乙個單鏈表 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已經內建確定序列的長度以及確定最大和最小的元素...