總結之陣列

2021-06-28 13:10:35 字數 1000 閱讀 1746

1.remove duplicates from sorted array

2.search in rotated sorted array

二分查詢的高階,不錯的題。在二分查詢前,先要確定一下哪一部分是有序陣列。

3.median of two sorted arrays

用到了二分查詢,還有遞迴。

這是乙個好題目,可以一般化為求兩個有序陣列中,第k大的元素。

實現的方法有很多種,大多數是o(m+n),但題目要求的是o(long(m+n)),這就是要求用到二分查詢。實現中,我們還用到了遞迴。

4.longest consecutive sequence

如果是先排序,那麼時間複雜度是o(nlogn)。要想o(n),需要用到hash,記錄每個元素是否使用過。對每個元素,以該元素為中心,左右擴張,直到不連續,記錄最大的長度。

5.two sum/three sum/four sum.....

這是乙個系列,在乙個整型陣列中找出幾個數的和等於乙個目標數。

對於tow sum,可以採用hash的辦法,時間複雜度是o(n)

對於其它k-sum,可以採用先排序,然後左右夾逼的辦法。時間複雜度是o(n^k-1)

6.next permutation

7.valid sudoku

考慮行,列,每個子方格。用乙個9位的bool陣列,表示是否used。

9.rotate image

先按照對角線翻一次,然後按照水平中線再翻轉一次。

10.climbing stairs

f(n)表示爬到n層樓梯的方法。f(n) = f(n-1)+f(n-2)。用迭代的方式實現。

11.gas station

我覺得一道很簡短精巧的題。

12.candy

很有趣的一道題。解題思路清楚,化繁為簡。

13.single number

用異或。

14.merge sorted array

從陣列末尾往前操作,可以省去很多操作

學習總結之樹狀陣列

樹狀陣列和線段樹聽說是區分acmer和其他人的重要區別,嘿嘿嘿。樹狀陣列總體而言可以總結為乙個很簡單的問題複雜化,但是時間簡單化。問題的引入 給定n個數,a 1 a n 每次我們可能有兩種操作 1 求出a i a j 的和 2 給a x 的值加上乙個值val。n的規模如果比較大 約100000 該如...

java基礎複習總結之陣列

陣列在初始化時由程式設計師顯式指定每個陣列元素的初始值而陣列長度由系統決定。陣列在初始化時只指定陣列長度,由系統為陣列元素分配初始值。1 int a new int 10 建立陣列時指定了長度,動態初始化 2 int b new int int b 建立陣列時指定了初始資料,靜態初始化 1 int ...

陣列之棧方法 佇列方法總結

首先,棧方法是針對陣列的結尾處進行的操作,其方法特點在於 先進後出 都是在原陣列的基礎上進行的操作,即會 改變原有陣列,包含兩個方法 函式和 函式 函式是在陣列的最後新增乙個元素,返回值是新的陣列的長度,引數是要新增的新元素。函式是彈出陣列的最後乙個元素,無引數,返回值是彈出的那個元素。其次,佇列方...