數據結構 面試題

文章目錄

    • 1.數組
        • 1.1 尋找數組中第二小的元素
        • 1.2 找到數組中第一個不重復出現的整數
        • 1.3合并兩個有序數組
        • 1.4 重新排列數組中的正值和負值
    • 2.棧
        • 2.1 前綴表達式,中綴表達式,后綴表達式
          • 2.1.1 中綴表達式轉化為后綴表達式
          • 2.1.2 中綴表達式轉化為前綴表達式
        • 2.2使用棧計算后綴表達式
        • 2.3對棧的元素進行排序
        • 2.4判斷表達式是否括號平衡
    • 3.隊列
        • 3.1 使用隊列表示棧
        • 3.2 對隊列的前k個元素倒序
        • 3.3 使用隊列生成從1到n的二進制數
    • 4.鏈表
        • 4.1 反轉鏈表
        • 4.2檢測鏈表中的循環
        • 4.3返回鏈表倒數第N個節點
        • 4.4刪除鏈表中的重復項
    • 5.樹
        • 5.1 求二叉樹的高度
        • 5.2 在二叉搜索樹中查找第k個最大值
        • 5.3 查找與根節點距離k的節點
        • 5.4 在二叉樹中查找給定節點的祖先節點
    • 6.圖
        • 6.1 實現廣度和深度優先搜索
        • 6.2檢查圖是否為樹
        • 6.3計算圖的邊數
        • 6.4找到兩個頂點之間的最短路徑
    • 7.字典樹(這是一種高效的樹形結構,但值得單獨說明)
        • 7.1 計算字典樹中的總單詞數
        • 7.2 打印存儲在字典樹中的所有單詞
        • 7.3 使用字典樹對數組的元素進行排序
        • 7.4 使用字典樹從字典中形成單詞
        • 7.5 構建T9字典(字典樹+ DFS )
    • 8.散列表(哈希表)
        • 8.1 在數組中查找對稱鍵值對
        • 8.2 追蹤遍歷的完整路徑
        • 8.3 查找數組是否是另一個數組的子集
        • 8.4 檢查給定的數組是否不相交

1.數組

1.1 尋找數組中第二小的元素

思路:升序排序之后,輸出第二個數字

1.2 找到數組中第一個不重復出現的整數

1.3合并兩個有序數組

def merge_sort(a, b):
ret = []
i = j = 0
while len(a) >= i + 1 and len(b) >= j + 1:if a[i] <= b[j]:ret.append(a[i])i += 1else:ret.append(b[j])j += 1
if len(a) > i:ret += a[i:]
if len(b) > j:ret += b[j:]
return retif __name__ == '__main__':
a = [1,3,4,6,7,78,97,190]
b = [2,5,6,8,10,12,14,16,18]
print(merge_sort(a, b))

1.4 重新排列數組中的正值和負值

2.棧

2.1 前綴表達式,中綴表達式,后綴表達式

2.1.1 中綴表達式轉化為后綴表達式

中綴表達式轉后綴表達式的規則:

  • 1.遇到操作數,直接輸出;
  • 2.棧為空時,遇到運算符,入棧;
  • 3.遇到左括號,將其入棧;
  • 4.遇到右括號,執行出棧操作,并將出棧的元素輸出,直到彈出棧的是左括號,左括號不輸出;
  • 5.遇到其他運算符’+”-”*”/’時,彈出所有優先級大于或等于該運算符的棧頂元素,然后將該運算符入棧;
  • 6.最終將棧中的元素依次出棧,輸出。
    經過上面的步驟,得到的輸出既是轉換得到的后綴表達式。
2.1.2 中綴表達式轉化為前綴表達式

2.2使用棧計算后綴表達式

2.3對棧的元素進行排序

2.4判斷表達式是否括號平衡

3.隊列

3.1 使用隊列表示棧

3.2 對隊列的前k個元素倒序

3.3 使用隊列生成從1到n的二進制數

4.鏈表

4.1 反轉鏈表

4.2檢測鏈表中的循環

4.3返回鏈表倒數第N個節點

4.4刪除鏈表中的重復項

5.樹

5.1 求二叉樹的高度

5.2 在二叉搜索樹中查找第k個最大值

5.3 查找與根節點距離k的節點

5.4 在二叉樹中查找給定節點的祖先節點

6.圖

6.1 實現廣度和深度優先搜索

6.2檢查圖是否為樹

6.3計算圖的邊數

6.4找到兩個頂點之間的最短路徑

7.字典樹(這是一種高效的樹形結構,但值得單獨說明)

7.1 計算字典樹中的總單詞數

7.2 打印存儲在字典樹中的所有單詞

7.3 使用字典樹對數組的元素進行排序

7.4 使用字典樹從字典中形成單詞

7.5 構建T9字典(字典樹+ DFS )

8.散列表(哈希表)

8.1 在數組中查找對稱鍵值對

8.2 追蹤遍歷的完整路徑

8.3 查找數組是否是另一個數組的子集

8.4 檢查給定的數組是否不相交

參考:
(1) https://baijiahao.baidu.com/s?id=1609200503642486098&wfr=spider&for=pc - (應對程序員面試,你必須知道的八大數據結構)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/273844.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/273844.shtml
英文地址,請注明出處:http://en.pswp.cn/news/273844.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

WPF之無法觸發KeyDown或者KeyUp鍵盤事件

有時候我們可能在Panel(StackPanel、Canvas、Grid)上或者是在一些默認不支持Focus的控件上添加了KeyDown或者KeyUp&#xff0c;可是殘酷的現實告訴我們&#xff0c;這是無法觸發的&#xff0c;怎么辦呢&#xff0c;很簡單&#xff0c;只需一句代碼。 private void MouseLeftBut…

宣布在日本地區正式發布 Windows Azure

&#xfeff;&#xfeff;昨天&#xff0c;我與 Microsoft 日本的集團副總裁 Yasuyuki Higuchi 一同站在臺上&#xff0c;宣布在兩個新地區正式發布 Windows Azure&#xff1a;日本東部和日本西部。能夠親自見證 Microsoft 對日本市場的持續承諾&#xff0c;對我來說是莫大的榮…

運行cmd狀態下MySQL導入導出.sql文件

MySQL導入導出.sql文件步驟如下&#xff1a; 一.MySQL的命令行模式的設置&#xff1a; 桌面->我的電腦->屬性->環境變量->新建-> PATH“&#xff1b;path\mysql\bin;”其中path為MySQL的安裝路徑。 二.簡單的介紹一下命令行進入MySQL的方法&#xff1a; 1.C:\&g…

python中的collections

文章目錄deque(雙向列表)defaultdict(為不存在的key設置默認值)OrderedDictOrderedDict可以實現一個FIFO&#xff08;先進先出&#xff09;的dict&#xff0c;Counter參考collections是Python內建的一個集合模塊&#xff0c;提供了許多有用的集合類。deque(雙向列表) 使用list…

mysql 面試點

文章目錄mysql 運算符1.mysql運算符中的 !和Not的區別&#xff1f;CRUD1.條件判斷的用法2. not exits 和not in 的區別3. case when語句mysql函數1.to_days()連接1.什么時候選擇右連接&#xff0c;什么時候選擇左連接&#xff1f;mysql 運算符 1.mysql運算符中的 !和Not的區別…

[Windows Phone] 實作不同的地圖顯示模式

[Windows Phone] 實作不同的地圖顯示模式 原文:[Windows Phone] 實作不同的地圖顯示模式前言 本文章主要示范如何讓地圖有不同的模式產生&#xff0c;例如平面圖、地形圖、鳥瞰圖、鳥瞰圖含街道等。 這部分主要是調整 Map.CartographicMode 屬性&#xff0c;其中 MapCartograph…

數據庫 CURD測試題【中等】

文章目錄1.換座位&#xff08;交換相鄰的id&#xff09;基本信息要求答案[case when]2.分數排名(分組&#xff0c;排序)基本信息要求答案3.連續出現的數字(連接)信息要求答案4.第N高的薪水(函數)信息要求答案5.各個部門工資最高的員工(分組&#xff0c;連接)信息要求答案6.統計…

[STemWin教程入門篇]第一期:emWin介紹

特別說明&#xff1a;原創教程&#xff0c;未經許可禁止轉載&#xff0c;教程采用回復可見的形式&#xff0c;謝謝大家的支持。 armfly-x2,x3,v2,v3,v5開發板裸機和帶系統的emWin工程已經全部建立&#xff0c;鏈接如下&#xff1a; http://bbs.armfly.com/read.php?tid1830 SE…

python 棧【測試題】

文章目錄1.刪除最外層的括號信息要求答案2.棒球比賽信息示例答案3. 用棧實現隊列要求說明:答案4.用隊列模擬棧描述注意答案5.下一個更大的元素&#xff08;未解&#xff09;信息&#xff1a;示例&#xff1a;注意:答案&#xff1a;6.刪除字符串中的所有相鄰重復項信息示例&…

python從socket做個websocket的聊天室server

下面的是server端&#xff1a;把IP改成自己的局域網IP&#xff1a; #coding:utf8 import socket,select import SocketServer import hashlib,base64,time from pprint import pprint#author:lijim def f(key):skey"258EAFA5-E914-47DA-95CA-C5AB0DC85B11"sha1hashli…

python進階(第三章1) 字典

文章目錄3.1 泛映射類型什么是可散列的數據類型&#xff08;鍵的要求&#xff09;字典的構造方法3.2 字典推導(dictcomp)3.3 常見的映射方法用setdefault處理找不到的鍵3.4 映射的彈性鍵查詢3.4.1 defaultdict:處理找不到的鍵的一個選擇注意&#xff1a;defaultdict與dict實例化…

python基礎 list和tuple

文章目錄一、list1、len()函數可以獲得list元素的個數2、索引從0開始3、末尾追加 append(xx)4、也可以把元素插入到指定的位置&#xff0c;比如索引號為1的位置(insert)5、末尾刪除pop() &#xff0c;并且返回該值6、要刪除指定位置的元素&#xff0c;用pop(i)方法&#xff0c;…

HDU 2818 Building Block

題目連接 http://acm.hdu.edu.cn/showproblem.php?pid2818 題意:給定N個blocks&#xff0c;分在N個堆里&#xff0c;然后又P個操作&#xff0c;每次將x所在的堆放在y所在的堆上&#xff0c;或者詢問x的下面有幾個blocks 做法&#xff1a;帶權并查集 因為要查詢x的下面有多少bl…

百度社會化分享組件使用問題

今天下午玩了玩百度的社會化分享sdk,我是在這下載的sdk http://developer.baidu.com/frontia/sdk 誰知道這個下載鏈接是沒更新的,還是1.0版本的,是尼瑪13年初的版本 搗鼓了半天各種bug 然后去百度官網重新找http://developer.baidu.com/wiki/index.php?titledocs/frontia/res…

python基礎 dict和set

文章目錄dictset4.用集合為列表去重5.集合的增 add,update6.集合的刪 discard,remove,pop,clear7 集合運算7.1 子集(<或者issubset()方法)7.2并集(|或者union()方法)7.3 交集(&或者intersection())7.4 差集(-或者difference()方法)7.5 對稱集(^或者symmetric_difference…

python進階(第三章2)字典和集合

文章目錄3.8 集合論nee中的元素在haystack中出現的次數&#xff0c;可以在任何可迭代對象上3.8.1集合字面量3.8.2 集合推導3.8.3 集合操作3.9 dict和set的背后3.9.1 一個關于效率的實驗3.9.2 字典中的散列表1.散列值和相等性2.散列表算法獲取值&#xff1a;添加新的元素更新現有…

Android下實現GPS定位服務

1.申請Google API Key&#xff0c;參考前面文章 2.實現GPS的功能需要使用模擬器進行經緯度的模擬設置&#xff0c;請參考前一篇文章進行設置 3.創建一個Build Target為Google APIs的項目 4.修改Androidmanifest文件&#xff1a; view plain<uses-library android:name"…

python 鏈表 【測試題】

文章目錄注意&#xff1a;實例講解1 .鏈表基本功能2. 根據值刪除鏈表中的節點信息答案&#xff1a;3.反轉一個單鏈表信息答案4.合并兩個有序鏈表信息答案5.刪除排序鏈表中的重復元素信息答案6.移除鏈表元素信息7.環形鏈表信息進階思路答案注意&#xff1a; 這里的head是只存儲…

WebService應用一例,帶有安全驗證

1、創建WEB項目&#xff0c;添加WEB服務WebService1.asmx&#xff0c;代碼如下&#xff1a; 1 using System;2 using System.Collections.Generic;3 using System.Linq;4 using System.Web;5 using System.Web.Services;6 7 namespace WebService8 {9 /// <summary> …