【 劍指Offer 1 】數據結構
數據結構是技術面試中的重點,總結以下幾種常見的必須熟練掌握數據結構。
- 數組
- 字符串
- 鏈表
- 樹
- 棧和隊列
數組和字符串是兩種最基本的數據結構,連續內存;
鏈表和樹是面試中出現頻率最高的;
棧與遞歸密切相關,隊列與廣度優先遍歷算法密切相關。
1. 數組
順序存儲數據。
預先分配內存:創建數組時,我們需要首先制定數組的容量大小,根據大小分配內存。
問題:空間效率不好,經常會有空閑的區域沒有得到充分利用。
優點:內存連續,可根據下表在O(1) 時間讀/寫任何元素,時間效率高。
實現簡單哈希表:數組下標設為哈希表的鍵值(key),數組中的數字位哈希表的值(value)。可以在O(1)時間內實現查找,快速、高效地解決問題。
動態數組:解決數組空間效率不高的問題。
例:C++的STL中的vector。可擴容。但這種額外操作影響時間性能。需要盡量減少改變數組容量大小的次數。
數組名也是一個指針,利用指針訪問數組時,要防止越界。
舉例說明數組和指針的區別:
面試題:數組中重復的數字
【 劍指Offer 1 】數據結構
相關推薦
【 劍指Offer 1 】數據結構
value 隊列 數組名 出現 額外 offer 劍指offer 兩種 訪問 數據結構是技術面試中的重點,總結以下幾種常見的必須熟練掌握數據結構。 數組 字符串 鏈表 樹 棧和隊列 數組和字符串是兩種最基本的數據結構,連續內存; 鏈表和樹是面試中
【劍指offer{1-3}】二維陣列查詢、空格替換、從尾到頭列印連結串列
注:程式碼均在牛客網上執行,結果均通過! 二維陣列查詢 題目描述 在一個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函
【劍指Offer學習】【面試題13 :在O(1)時間刪除連結串列結點】
程式碼實現: public class Test13 { /** * 連結串列結點 */ public static class ListNode { int value; // 儲存連結串列的值 L
劍指offer(1):數組
abs views 二維數組 如同 pad enter 數組與指針 在線 c語言細節 1 寫作計劃 最近在看《劍指offer》,發現自己有很多的數據結構與算法的基礎知識要復習,《好書一起讀(131):讓寫作更好》中提到用寫作倒逼閱讀,我很是贊同。所以,計劃以《劍指offe
【數據結構總結1】-數據結構的自述
它的 除了 友情 設計 提高自己 ear hellip 編程人員 aid 一、數據結構的自我介紹 大家好,餓叫數據結構,是用來提高程序員的程序設計水平的。 官方定義我為:數據結構是指相互之間存在著一種或多種關系的數據元素的集合和該集合中數據元素之間的關系組成。記為:
【劍指Offer學習】【所有面試題匯總】
tails 超過一半 奇數 正則表達式 detail 刪除 祖先 滑動窗口 翻轉單詞順序 劍指Offer學習 劍指Offer這本書已經學習完了,從中也學習到了不少的東西,現在做一個總的目錄,供自已和大家一起參考,學如逆水行舟,不進則退。只有不斷地學習才能跟上時候,跟得
【劍指Offer學習】【面試題5 : 從尾到頭列印連結串列】【思路】
方案一:(後進先出)遍歷連結串列,再從棧頂開始出個輸出結點的值,此時輸出的結點的順序已經反轉過來了。 先推進棧 再依次取出棧頂元素 方案二:遞迴。 判斷連結串列頭結點是否為空 將 next 結點作為下一次的實參 輸出當前棧頂元素。 缺點:當連結串
【劍指offer python】面試題7:用兩個棧實現佇列
題目連結 題目描述 用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。 solution class Solution: def __
【劍指offer python】面試題8:旋轉陣列的最小數字
題目連結 題目描述 把一個數組最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。 輸入一個非減排序的陣列的一個旋轉,輸出旋轉陣列的最小元素。 例如陣列{3,4,5,1,2}為{1,2,
【劍指Offer學習】【所有面試題彙總】
劍指Offer學習 劍指Offer這本書已經學習完了,從中也學習到了不少的東西,現在做一個總的目錄,供自已和大家一起參考,學如逆水行舟,不進則退。只有不斷地學習才能跟上時候,跟得上技術的潮流! 目錄 第01-10題 第11-20題 第21-30題
【劍指Offer學習】【面試題4 : 替換空格】【思路】
題目: 請實現一個函式,將一個字串中的每個空格替換成“%20”。例如,當字串為We Are Happy,則經過替換之後的字串為We%20Are%20Happy。 思路: 遍歷的方向兩邊皆可。 若從後往前遍歷,新的字串需要反轉。 用 String 類的方法判斷字串
【劍指Offer學習】【面試題5 : 從尾到頭列印連結串列】
題目:輸入個連結串列的頭結點,從尾到頭反過來打印出每個結點的值。 public class Test05 { /** * 結點物件 */ public s
【劍指Offer學習】【面試題26:複雜連結串列的複製】
題目:請實現函式ComplexListNode clone(ComplexListNode head),複製一個複雜連結串列。在複雜連結串列中,每個結點除了有一個next 域指向下一個結點外,還有一個sibling 指向連結串列中的任意結點或者null。
【劍指Offer學習】【面試題56:連結串列中環的入口結點】
題目:一個連結串列中包含環,如何找出環的入口結點? 解題思路 可以用兩個指標來解決這個問題。先定義兩個指標P1和P2指向連結串列的頭結點。如果連結串列中環有n個結點,指標P1在連結串列上向前移動n步,然後兩個指標以相同的速度向前移動。當第二個指標
【劍指Offer學習】【面試題60:把二叉樹打印出多行】
題目:從上到下按層列印二叉樹,同一層的結點按從左到右的順序列印,每一層列印一行。 解題思路 用一個佇列來儲存將要列印的結點。為了把二叉樹的每一行單獨列印到一行裡,我們需要兩個變數:一個變量表示在當前的層中還沒有列印的結點數,另一個變量表示下一次結
【劍指Offer學習】【面試題50:樹中兩個結點的最低公共祖先】
題目:求樹中兩個結點的最低公共祖先,此樹不是二叉樹,並且沒有指向父節點的指標。 樹的結點定義 private static class TreeNode { int val; List<TreeNode> childre
【劍指Offer學習】【面試題67:機器人的運動範圍】
題目:地上有個m行n列的方格。一個機器人從座標(0,0)的格子開始移動,它每一次可以向左、右、上、下移動一格,但不能進入行座標和列座標的數位之和大於k的格子。 舉例分析 例如,當k為18時,機器人能夠進入方格(35,37),因為3+5+3+7=1
【劍指Offer學習】【面試題31:連續子陣列的最大和】
題目:輸入一個整型陣列,數組裡有正數也有負數。陣列中一個或連續的多個整陣列成一個子陣列。求所有子陣列的和的最大值。要求時間複雜度為O(n)。 例子說明: 例如輸入的陣列為{1, -2, 3, 10, -4, 7, 2, -5},和最大的子陣列為{3,
【劍指Offer學習】【面試題54:表示數值的字串】
題目:請實現一個函式用來判斷字串是否表示數值(包括整數和小數)。 例子說明 例如,字串“+100”,“5e2”,“-123”,“3.1416”及”-1E-16”都表示數值,但“12e”,”1a3.14”,”1.2.3”,”+-5”及“12e+5.
【劍指Offer學習】【面試題18 :樹的子結構】
題目:輸入兩棵二叉樹A 和B,判斷B 是不是A 的子結構。 二叉樹結點的定義: /** * 二叉樹的樹結點 */ public static class BinaryTreeNode { int value; BinaryT