File tree 3 files changed +101
-0
lines changed
3 files changed +101
-0
lines changed Original file line number Diff line number Diff line change
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
+ };
Original file line number Diff line number Diff line change
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 ]
Original file line number Diff line number Diff line change
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 )
You can’t perform that action at this time.
0 commit comments