解法二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...