File tree Expand file tree Collapse file tree 1 file changed +77
-0
lines changed Expand file tree Collapse file tree 1 file changed +77
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * @author zhangruihao.zhang
3
+ * @version v1.0.0
4
+ * @since 2019/04/24
5
+ */
6
+ public class LeetCode_153_108 {
7
+
8
+ class Solution1 {
9
+ public int findMin (int [] nums ) {
10
+ if (nums .length == 1 ){
11
+ return nums [0 ];
12
+ }
13
+ if (nums .length == 2 ){
14
+ return nums [0 ] > nums [1 ] ? nums [1 ] : nums [0 ];
15
+ }
16
+ if (nums [0 ] < nums [nums .length -1 ]){
17
+ return nums [0 ];
18
+ }
19
+ int min = 0 ;
20
+ int high = nums .length - 1 ;
21
+ int mid = 0 ;
22
+ while (min <= high ){
23
+ //针对1、2、3这种情况
24
+ if (min == high ){
25
+ return nums [min ];
26
+ }
27
+ mid = min + ((high -min ) >> 1 );
28
+ if (nums [mid ] > nums [high ]){
29
+ if (nums [mid +1 ] < nums [mid ]){
30
+ return nums [mid +1 ];
31
+ }
32
+ min = mid + 1 ;
33
+ continue ;
34
+ }
35
+ if (nums [mid ] < nums [min ]){
36
+ if (nums [mid -1 ] > nums [mid ]){
37
+ return nums [mid ];
38
+ }
39
+ high = mid - 1 ;
40
+ }
41
+ }
42
+ return -1 ;
43
+ }
44
+
45
+ //二分查找
46
+ //分为两种情况
47
+ //mid比最后一个元素大,判断它右边的值是否小于它,如果小于的话就返回右边的值,否则的话,min取mid+1
48
+ //mid比第一个元素小,判断它左边的值是否比它大,如果大的话,直接返回它自己,否则的话high取mid-1
49
+ }
50
+
51
+ class Solution2 {
52
+ public int findMin (int [] nums ) {
53
+ if (nums .length == 1 ){
54
+ return nums [0 ];
55
+ }
56
+ int min = 0 ;
57
+ int high = nums .length - 1 ;
58
+ int mid = 0 ;
59
+ while (min < high ){
60
+ mid = min + ((high -min ) >> 1 );
61
+ if (nums [mid ] > nums [high ]){
62
+ min = mid + 1 ;
63
+ } else {
64
+ high = mid ;
65
+ }
66
+ }
67
+ return nums [min ];
68
+ }
69
+
70
+ //二分查找
71
+ //分为两种情况
72
+ //mid比最后一个元素大,判断它右边的值是否小于它,如果小于的话就返回右边的值,否则的话,min取mid+1
73
+ //mid比第一个元素小,判断它左边的值是否比它大,如果大的话,直接返回它自己,否则的话high取mid-1
74
+
75
+
76
+ }
77
+ }
You can’t perform that action at this time.
0 commit comments