LeetCode位元組跳動專題 資料結構

2021-10-23 08:04:09 字數 1978 閱讀 5411

設計乙個支援 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。

push(x) – 將元素 x 推入棧中。

pop() – 刪除棧頂的元素。

top() – 獲取棧頂元素。

getmin() – 檢索棧中的最小元素。

示例:minstack minstack = new minstack();

minstack.push(-2);

minstack.push(0);

minstack.push(-3);

minstack.getmin(); --> 返回 -3.

minstack.pop();

minstack.top(); --> 返回 0.

minstack.getmin(); --> 返回 -2.

兩個棧,乙個正常儲存,乙個儲存最小值,和劍指offer上的是一樣的,更細節的可以去看一下。

class

minstack

void

push

(int x)

void

pop(

)int

top(

)int

getmin()

private

: stack<

int> s1, s2;

};

運用你所掌握的資料結構,設計和實現乙個 lru (最近最少使用) 快取機制。它應該支援以下操作: 獲取資料 get 和 寫入資料 put 。

獲取資料 get(key) - 如果金鑰 (key) 存在於快取中,則獲取金鑰的值(總是正數),否則返回 -1。 寫入資料 put(key, value) - 如果金鑰不存在,則寫入其資料值。當快取容量達到上限時,它應該在寫入新資料之前刪除最近最少使用的資料值,從而為新的資料值留出空間。

高階:你是否可以在 o(1) 時間複雜度內完成這兩種操作?

示例:lrucache cache = new lrucache( 2 /* 快取容量 */ );

cache.put(1, 1);

cache.put(2, 2);

cache.get(1); // 返回 1

cache.put(3, 3); // 該操作會使得金鑰 2 作廢

cache.get(2); // 返回 -1 (未找到)

cache.put(4, 4); // 該操作會使得金鑰 1 作廢

cache.get(1); // 返回 -1 (未找到)

cache.get(3); // 返回 3

cache.get(4); // 返回 4

按題意的來嘛,用 map 加 stack 就可以解決了。

/**

* your lrucache object will be instantiated and called as such:

* lrucache obj = new lrucache(capacity);

* int param_1 = obj.get(key);

* obj.put(key,value);

*/class

lrucache

public

intget

(int key)

boolean flag = stack.

remove

(integer.

valueof

(key));

stack.

push

(key)

;return map.

get(key);}

public

void

put(

int key,

int value)

else

} stack.

push

(key)

; map.

put(key,value);}

}

位元組跳動mysql面試 位元組跳動 Golang面試

應朋友之邀,今天下午去位元組送了顆人頭,最後不負眾望,被面試官攆出來了 一面mysql索引快的原理 回答這個問題需要先看一下資料庫的儲存結構 頁結構頁和頁之間的關係 頁和頁之間的關係 有個知識,之前不知道的 聚集索引 以主鍵建立的索引,葉子節點儲存的是表中的資料 非聚集索引 非主鍵建立的索引,葉子節...

leetcode 位元組跳動 挑戰字串

換句話說,第乙個字串的排列之一是第二個字串的子串。示例1 輸入 s1 ab s2 eidbaooo 輸出 true 解釋 s2 包含 s1 的排列之一 ba 示例2 輸入 s1 ab s2 eidboaoo 輸出 false 注意 輸入的字串只包含小寫字母 兩個字串的長度都在 1,10,000 之間...

leetcode 位元組跳動 挑戰字串

輸入 flower flow flight 輸出 fl 輸入 dog racecar car 輸出 解釋 輸入不存在公共字首。class solution if flag 1 n if flag 0 return 在這題中直接返回子字串。如果不存在公共字首,返回空字串 示例 1 輸入 flower ...