演算法刻意練習第二天 陣列與鍊錶

2021-10-04 14:00:57 字數 1245 閱讀 6378

查詢

記憶體連續的儲存空間,記憶體管理器可以實現訪問任何乙個位置的元素,o(1)的查詢。

插入[1,2,3,4,5] 在3和4之間插入乙個值,6,需要把4,5 往後挪動。平均時間複雜度是o(n),刪除也是o(n) 的平均時間複雜度。

我想改變他的插入和更新的時間複雜度,有沒有好的資料結構呢?

鍊錶 – linked list

本質上,有乙個指標,鏈向下乙個節點,整個連成乙個表

查詢 o(n) , 但是在插入和刪除之前,需要查詢到對應的節點前插入或者刪除。

插入和刪除o(1)

1、反轉鍊錶,出鏡率數一數二

1-2-3-4-5

反轉5-4-3-2-1

主要考察**能力:

遞迴思路:

1、定義終止條件,(當遍歷到最後乙個節點的時候,方法返回,開始出棧)

2、出棧操作

2.1 將最後乙個節點的next指標指向前乙個節點

2.2 注意,將前乙個節點的指標記錄置空

2.3 注意,邊界條件的處理,當輸入是空的時候,輸出也應該是空,處理好就行

/**

* definition for singly-linked list.

* public class listnode

* }*/class

solution

listnode next = head.next;

final listnode listnode =

reverselist

(next)

; next.next = head;

head.next = null;

return listnode;

}}

定義兩個變數:

1、currnode 代表,當前遍歷到的值

2、newlinklistlastnode :代表反轉後的尾節點

將prev.next = newlinklistlastnode;

更新尾節點 newlinklistlastnode = currnode;

往後遍歷

/**

* definition for singly-linked list.

* public class listnode

* }*/class

solution

return newlinklistlastnode;

}}

PHP 第二天陣列

陣列,就是將多個 資料 放在一起,排成乙個有序序列,這個序列作為乙個整體 裡面包括了多個資料 就稱為 陣列 比如 info1 array 張三丰 18,男 新版本中,還可以這樣寫 張三丰 18,男 或 info2 array name 張三丰 age 18,gender 男 新版本中,還可以這樣寫 ...

第二天 列表練習

list 列表 特點 可獲取 可修改 有序的 定義乙個空列表 listvar print listvar print type listvar 正向索引 0 1 2 3 4 listvar 90,19.9,true,8 90j,王振 逆向索引 5 4 3 2 1 1.獲取列表當中的值 res lis...

2第二天數運算

數型別及其運算 解決eclipse寫python新增中文注釋報錯問題 import sys a 3b 4 c 5.5 d 4.5 e complex c,d f complex float a float b complex表示複數,第乙個引數是實數部分,第二個引數是虛數部分 print is a ...