Skip to content

Commit 4089306

Browse files
committedJan 14, 2021
33 155
1 parent 1cd9cb7 commit 4089306

File tree

3 files changed

+101
-0
lines changed

3 files changed

+101
-0
lines changed
 

‎cpp/155.cpp

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#include<bits/stdc++.h>
2+
using std::vector;
3+
4+
class MinStack {
5+
public:
6+
vector<int>* stack;
7+
vector<int>* min_stack;
8+
/** initialize your data structure here. */
9+
MinStack() {
10+
stack = new vector<int>();
11+
min_stack = new vector<int>();
12+
min_stack->push_back(INT_MAX);
13+
}
14+
15+
void push(int x) {
16+
stack->push_back(x);
17+
int pre_min = min_stack->back();
18+
if (x < pre_min)
19+
min_stack->push_back(x);
20+
else
21+
min_stack->push_back(pre_min);
22+
}
23+
24+
void pop() {
25+
stack->pop_back();
26+
min_stack->pop_back();
27+
}
28+
29+
int top() {
30+
return stack->back();
31+
}
32+
33+
int getMin() {
34+
return min_stack->back();
35+
}
36+
};

‎python/155.py

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
2+
3+
MAX_VAL = 10000000000000
4+
5+
class MinStack:
6+
7+
def __init__(self):
8+
"""
9+
initialize your data structure here.
10+
"""
11+
self.stack = []
12+
self.min_stack = [MAX_VAL]
13+
14+
15+
def push(self, x: int) -> None:
16+
self.stack.append(x)
17+
if x < self.min_stack[-1]:
18+
self.min_stack.append(x)
19+
else:
20+
self.min_stack.append(self.min_stack[-1])
21+
22+
def pop(self) -> None:
23+
self.stack.pop()
24+
self.min_stack.pop()
25+
26+
def top(self) -> int:
27+
return self.stack[-1]
28+
29+
def getMin(self) -> int:
30+
return self.min_stack[-1]

‎python/33.py

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
from typing import List
2+
3+
4+
class Solution:
5+
def search(self, nums: List[int], target: int) -> int:
6+
if len(nums) == 0:
7+
return -1
8+
l = 0
9+
r = len(nums) - 1
10+
11+
while l < r:
12+
mid = (r - l) // 2 + l
13+
num_mid = nums[mid]
14+
if num_mid >= nums[l]: # 在左边
15+
if target <= num_mid and target >= nums[l]: # 由于 r=mid因此可以等于
16+
r = mid
17+
else:
18+
l = mid + 1
19+
else:
20+
if target > num_mid and target <= nums[r]: # nums[mid] < target < nums[r]
21+
l = mid + 1
22+
else:
23+
r = mid
24+
25+
if nums[l] == target:
26+
return l
27+
28+
return -1
29+
30+
if __name__ == "__main__":
31+
s = Solution()
32+
assert(s.search([1,3], 1) == 0)
33+
assert(s.search([1,3], 3) == 1)
34+
assert(s.search([3,1], 3) == 0)
35+
assert(s.search([3,1], 1) == 1)

0 commit comments

Comments
 (0)
Please sign in to comment.