騰訊50題刷題一 leetcode155

2021-09-25 20:56:15 字數 1234 閱讀 1146

解法二design a stack that supports push, pop, top, and retrieving the minimum element in constant time.

push(x) – push element x onto stack.

pop() – removes the element on top of the stack.

top() – get the top element.

getmin() – retrieve the minimum element in the stack.

example:

minstack minstack = new minstack();

minstack.push(-2);

minstack.push(0);

minstack.push(-3);

minstack.getmin(); --> returns -3.

minstack.pop();

minstack.top(); --> returns 0.

minstack.getmin(); --> returns -2.

這道最小棧跟原來的棧相比就是多了乙個功能,可以返回該棧的最小值。使用兩個棧來實現,乙個棧來按順序儲存push進來的資料,另乙個用來存出現過的最小值。

class minstack 

void push(int x)

void pop()

int top()

int getmin()

private:

stacks1, s2;

};

這種解法只用到了乙個棧,還需要乙個整型變數min_val來記錄當前最小值,初始化為整型最大值,然後如果需要進棧的數字小於等於當前最小值min_val,那麼將min_val壓入棧,並且將min_val更新為當前數字。在出棧操作時,先將棧頂元素移出棧,再判斷該元素是否和min_val相等,相等的話我們將min_val更新為新棧頂元素,再將新棧頂元素移出棧即可

class minstack 

void push(int x)

st.push(x);

}void pop()

}int top()

int getmin()

private:

int min_val;

stackst;

};

leetcod刷題 移動零

週末了,睡了好久的懶覺了,起來去實驗室寫專案之前再刷一道題提提神就好了。給定乙個陣列 nums,編寫乙個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。示例 輸入 0,1,0,3,12 輸出 1,3,12,0,0 說明 必須在原陣列上操作,不能拷貝額外的陣列。儘量減少操作次數。這道題也...

騰訊50題第8題

編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 示例1 輸入 flower flow flight 輸出 fl 示例2 輸入 dog racecar car 輸出 解釋 輸入不存在公共字首。class solution def longestcommonprefix se...

騰訊50題第10題

給定乙個包括 n 個整數的陣列 nums 和 乙個目標值 target。找出 nums 中的三個整數,使得它們的和與 target 最接近。返回這三個數的和。假定每組輸入只存在唯一答案。例如,給定陣列 nums 1,2,1,4 和 target 1.與 target 最接近的三個數的和為 2.1 2...