劍指offer算法思想
阿新 • • 發佈:2019-03-16
設立 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算法思想