題目
描述
實現一個帶有取最小值min方法的棧,min方法將返回當前棧中的最小值。
你實現的棧將支持push
,pop
和 min
操作,所有操作要求都在O(1)時間內完成。
樣例
如下操作:push(1)
,pop()
,push(2)
,push(3)
,min()
, push(1)
,min()
返回 1,2,1
解答
思路
建立兩個棧,一個保持頂端是最小的數,另一個保存剩下的數據。
代碼
public class Solution {
/**
* param A : an integer sorted array
* param target : an integer to be inserted
* return : an integer
*/
public int searchInsert(int[] A, int target) {
// write your code here
int low = 0, high = A.length - 1, mid = 0;
if(A.length == 0) return 0;
while(low <= high){
mid = (low + high) / 2;
if(A[mid] == target) return mid;
else if(A[mid] > target) high = mid-1;
else low = mid+1;
}
if(A[mid] > target) return mid;
else return mid + 1;
}
}