[剑指offer]面试题第[59-2]题[JAVA][队列的最大值][暴力][双端队列]
【問題描述】[中等]
【解答思路】
1. 暴力
復雜度分析
2. 維護一個單調(diào)的雙端隊列
時間復雜度:O(1) 空間復雜度:O(N)
【總結】
1.ArrayList與LinkedList對比
ArrayList是順序結構,所以定位很快,但插入,刪除數(shù)據(jù)慢。
LinkedList 是鏈表結構,定位慢,但插入,刪除數(shù)據(jù)快。
2.ArrayList與LinkedList常見方法
ArrayList實現(xiàn)了List接口,常見方法有:
add(); contains(); get(); indexOf():定位對象所處的位置; remove(); size(); toArray(); toString();//轉換為字符串
LinkedList也實現(xiàn)了List接口外,可以實現(xiàn)上述ArrayList中的常用方法,此外:
1.LinkedList還實現(xiàn)了雙向鏈表結構Deque,可以很方便的在頭尾插入刪除數(shù)據(jù)。
LinkedList link = new LinkedList<>();
常用方法:
addFirst(); addLast();
getFirst(); getLast();
removeFirst(); removeLast();
2.LinkedList除了實現(xiàn)了List和Deque外,還實現(xiàn)了Queue接口(隊列),
Queue是先進先出隊列 FIFO。
Queue< class > queue = new LinkedList<>();
常用方法:
poll()取出第一個元素;
peek()查看第一個元素;
offer()在最后添加元素,可用add()替換;
擴展
先進后出FILO Stack棧:
Stack stack = new Stack<>();
常用方法:
push();可用add();代替
pop();輸出末尾的元素相當于LinkedList中的removeLast();
peek();查看最后一個元素,相當于getLast();
3.做題需要不斷總結整理歸納
建議和[劍指offer][JAVA]面試題第[09]題[用兩個棧實現(xiàn)隊列]LinkedList(https://blog.csdn.net/dadongwudi/article/details/106478719)一起學習
參考鏈接:https://leetcode-cn.com/problems/dui-lie-de-zui-da-zhi-lcof/solution/mian-shi-ti-59-ii-javashi-xian-yuan-li-he-mian-shi/
參考鏈接:https://leetcode-cn.com/problems/dui-lie-de-zui-da-zhi-lcof/solution/qi-shi-bu-tai-li-jie-jun-tan-fu-za-du-by-acnesu/
參考鏈接:https://leetcode-cn.com/problems/dui-lie-de-zui-da-zhi-lcof/solution/mian-shi-ti-59-ii-dui-lie-de-zui-da-zhi-by-leetcod/
總結
以上是生活随笔為你收集整理的[剑指offer]面试题第[59-2]题[JAVA][队列的最大值][暴力][双端队列]的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 百度AI人脸识别与检测五:学生人脸识别打
- 下一篇: [Leedcode][JAVA][第13