1. 程式人生 > >劍指offer算法思想

劍指offer算法思想

設立 urn while循環 offer 長度 nbsp 數量 bsp ray

3. 數組中重復的數字

算法步驟:遍歷該數組nums,從第一個數字開始,判斷

1)如果nums[i]和下標的值i一樣,就跳到下一個數字

2)如果不一樣,那麽就判斷,nums[i]是否等於nums[nums[i]],如果等於,輸出該數字nums[下標值],

如果不等於,那麽就調整nums[i]和nums[nums[i]]的順序。繼續重復1)和2)

4. 二維數組中的查找

算法步驟:

1)獲取行數rows和列數cols

2)確定從第一行r和最後一列c開始,即從右上角開始

3)while循環,行數r<=rows-1&&c>=0

4)如果target等於matric[r][c],直接輸出答案。如果target大於matric[r][c],行r增加,如果target小於matric[r][c],列減少,c--。

5. 替換空格

算法步驟:

1)得到原長度下標p1

2)然後遍歷字符串裏面的空格,如果是有空格,那麽在這個字符串後面加多兩個空格,最終是為了得到替代之後的字符長度數量下標p2

3)while(p1>=0&&p2>p1),獲取p1下標的值c,並且從右往左遍歷完,如果c為空格,那麽就往該字符串的P2 指向的位置依次填充 02%,如果不是空格,就直接添加c

6. 從尾到頭打印鏈表

算法思路:

1)往棧加數據

2)設置一個集合Arraylist

3)出棧,並且把數據加到該集合中

9. 用兩個棧實現隊列

算法思路:

1)設立兩個棧,一個負責傳入in,一個負責出棧out

2)入棧方法,就是使用in添加數據

3)出棧方法:

①如果out為空,那麽我們就要判斷in是否為空,如果不為空,那麽我們就取出in的數據,傳入out棧

②如果經過上述處理,out還為空,那麽就輸出queue為空

③return out.pop()

劍指offer算法思想