演算法-資料結構

2/3ページ

(三) 連結串列 – 連結串列進階問題彙總

(一)如何將兩個有序連結串列,合併成一個新的有序連結串列         可以用遞迴解決,時間複雜度為O(n),原理不太好講,上程式碼吧 public ListNode MergeList(ListNode a, ListNode b){ ListNode result = null; if(a = […]

雙向佇列解決滑動視窗最大值問題

這個問題讓我死在了雙向佇列的使用和演算法邏輯上面,所以記錄一下,以備後面檢視所需。 題目描述:     給定一個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列{2,3,4,2,6,2,5,1}及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為{4,4,6,6, […]

字串的排列(java)

題目描述: 輸入一個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。 輸入描述: 輸入一個字串,長度不超過9(可能有字元重複),字元只包括大小寫字母。 又是一個被細節坑死的題目,好不容易解決 […]

最小的k個數 (java)

題目描述: 輸入n個整數,找出其中最小的K個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,。 解題思路: 使用優先佇列保證佇列裡存放的是最小的K位數 第一次在解題過程中使用到優先佇列,做一下記錄 import java.util.ArrayList; imp […]

CF 487E Tourists(JZOJ4691 旅行) 樹鏈剖分維護點雙連通分量資訊

題目大意 給定一個NN個點MM條邊的無向圖,每個點有一個點權。現在有兩種操作,第一種是修改一個點的點權,第二種是詢問兩點間路徑上的最小點權(不能經過重複的點)。運算元為QQ。 N,M,Q≤109N,M,Q \leq 10^9 解題思路 我們先考慮沒有修改點權的情況。那麼我們可以先用點雙連通分量縮環, […]

JavaScript演算法之二叉搜尋樹

什麼是二叉樹 二叉樹就是樹的每個節點最多只能有兩個子節點 什麼是二叉搜尋樹 二叉搜尋樹在二叉樹的基礎上,多了一個條件,就是二叉樹在插入值時,若插入值比當前節點小,就插入到左節點,否則插入到右節點;若插入過程中,左節點或右節點已經存在,那麼繼續按如上規則比較,直到遇到一個新的節點。 二叉搜尋樹的特性 […]

圖的JS實現

圖的定義 圖就是由若干個頂點和邊連線起來的一種結構。很多東西都可以用圖來說明,例如人際關係,或者地圖。 其中圖還分為有向圖和無向圖。如下就是有向圖 圖的資料結構 對於圖這種關係,可以通過兩種方式來儲存。 領接表 將每個頂點與其相鄰的頂點儲存起來。 鄰接矩陣 將頂點間的相鄰關係用0和1來表示,0表示不 […]

非順序資料結構——字典

作用 通過鍵值(key-value)對來儲存不重複的值的,與集合相比,集合是通過值值(value-value)來儲存不重複的值 字典所需功能 跟據傳入的key-value值向字典中新增元素 通過key移除字典中對應的值 通過某個鍵來判斷是否含有某個值 通過給定的鍵查詢到特定的值並返回 將字典置為空 […]

學習經典演算法—JavaScript篇(一)排序演算法

前端攻城獅——學習常用的排序演算法 一、氣泡排序 優點: 所有排序中最簡單的,易於理解; 缺點: 時間複雜度O(n^2),平均來說是最差的一種排序方式; 因為在預設情況下,對於已經排好序的部分,此排序任然會進行比較(當然可以進行改進優化) 演算法步驟: 比較相鄰的元素,如果第一個比第二個大,就交換他 […]