玩转算法面试-第三章
數組中常見的問題
排序: 選擇排序;插入排序;歸并排序;快速排序
查找:二分查找法
數據結構:棧;隊列;堆
…
二分查找法:
1964年提出,沒有bug的二分查找法是在1962年出現
對于有序的排列,才能使用二分查找法
1查找中間的元素是否和目標元素相等
2小于,在左邊找
3大于,在右邊找
4關鍵點:邊界問題
區間為閉區間[l…r]
區間為前閉后開:[l…r)
如果存在整型溢出
leetcode 283 Move Zeros
給定一個數組nums,寫一個函數,將數組中所有的0挪到數組的末尾,而維持其他非0元素的相對位置。
1 思考題:刪除元素
2 刪除重復的元素
擴展題:最多保留兩個重復元素
3-5 基礎算法思路的應用
擴展題:歸并排序
leetcode 215 利用快排的思路,在一個整數序列中尋找第k大的元素
leetcode 167
1 兩個不同的元素
2 返回索引(索引是0開始,還是1開始)
167的解決方法就是對撞指針
125 有效回文串
空字符串如何看?
字符的定義?
大小寫問題?
解決方案:對撞指針
擴展題345:對元音字母進行翻轉
容器水最多,思考仍然用對撞指針去解決
3-7 雙索引技術(對撞指針等)
1 滑動窗口:
ep1: leetcode 209
什么叫子數組?子數組分連續喝不連續梁總中情況
如果沒有接怎么辦?返回0?、
如果有多個解怎么樣?應該怎么返回?按照什么規則?
練習題:sum求解是否可以使復雜度降為o(n*n)
窗口的長度把那個不是保持不變,同時由i和j控制;
3-8
如何記錄重復字符:
練習題1:(利用滑動窗口解決)
注意問題: 字符集范圍?英文小寫字母
返回的解的順序?任意
練習題2:leetcode76
注意問題:
總結
以上是生活随笔為你收集整理的玩转算法面试-第三章的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python中实现模糊匹配的魔法库:Fu
- 下一篇: 论文解读:Attention is Al