更新時間:2023-01-12 16:24:22 來源:動力節點 瀏覽1281次
1. 什么是數據?什么是數據結構?
數據是描述客觀事物的符號,能夠被計算機識別,并且給計算機處理的符號集合
數據結構是計算機內部組織數據的方式
2. 大O表示法
大O符號,又稱為漸進符號,是用于描述函數漸近行為的數學符號。更確切地說,它是用另一個通常更簡單的函數來描述一個函數數量級的漸近上界。
時間復雜度,是一個用于度量一個算法的運算時間的一個描述,本質是一個函數,它描述的只是代碼執行時間隨數據規模增長的變化趨勢
3. 順序表和鏈表
邏輯結構和物理結構,邏輯上都是相鄰的元素,但是物理上,順序表是相鄰的,鏈表一般都是不相鄰的
訪問元素的時候,對于按值查找,都是O(n),有序的話是O(log2n)
空間分配的情況,若順序表是靜態分配,空間固定,過多元素會溢出,若是動態分配,擴容存在時間消耗;鏈表的話則自由靈活
4. 鏈表反轉
方式一:使用棧結構來反轉,時間和空間開銷不立理想
方式二:使用三指針來反轉,效率高
5. 鏈表升序合并
方法一:遞歸,時間空間復雜度為O(n+m)
方法二:迭代,時間復雜度為O(n+m),空間復雜度為O(1)
6. 棧和隊列
隊列是一端進行插入另一端進行刪除的線性表
棧是表尾進行插入和刪除的線性表
它們都可以用數組和鏈表來實現
7. 棧和隊列的應用
前綴表達式和后綴表達式
8. 判斷循環隊列是否為空?
方法一:入隊tag=1,出隊tag=0
方法二:記錄元素數量num
方法三:少用一個空間,(rear+1%maxsize=front
9. 各種二叉樹的區別
完全二叉樹和滿二叉樹:除了最后一層外,其他任何一層的節點數均達到最大值,且最后一層也只是在最右側缺少節點
二叉排序樹和二叉搜索樹:都是一樣的,節點值大于左子節點的數值,小于右邊子節點的數值
平衡二叉樹(AVL):任意結點的左、右子樹高度差的絕對值不超過1
10. 重建二叉樹
根據前,中遍歷次序構造二叉樹和根據中,后序列構造二叉樹,只需要找到頭節點,然后遞歸找到左右子樹就行了
至于為什么不能不能根據前,后序列構造出二叉樹,是因為,我們只知道最開始頭節點的位置,其余元素不清楚是劃分到左子樹還是右子樹
以上就是“2023新年真題,數據結構與算法面試題”,你能回答上來嗎?如果想要了解更多的Java面試題相關內容,可以關注動力節點Java官網。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習