File tree Expand file tree Collapse file tree 3 files changed +62
-1
lines changed Expand file tree Collapse file tree 3 files changed +62
-1
lines changed Original file line number Diff line number Diff line change 6
6
* 难度:Medium
7
7
* 分类:Array, Binary Search
8
8
* 思路:二分查找的思路,多了一步判断,判断哪部分有序,是否在这部分中
9
- * Tips:注意边界判断,是否有等号
9
+ * Tips:注意边界判断,是否有等号。挺麻烦的,没有输入样本,很难想通边边角角
10
+ * lc81
10
11
*/
11
12
public class lc33 {
12
13
public static void main (String [] args ) {
@@ -40,4 +41,26 @@ public static int search(int[] nums, int target) {
40
41
}
41
42
return -1 ;
42
43
}
44
+
45
+ public int search2 (int [] nums , int target ) {
46
+ int begin = 0 , end = nums .length -1 ;
47
+ while (begin <=end ){
48
+ int mid = (begin +end )/2 ;
49
+ if (target ==nums [mid ]) return mid ;
50
+ if (nums [begin ]<=nums [mid ]){ //左边有序,别忘了=,begin==end
51
+ if (target >=nums [begin ]&&target <nums [mid ]){
52
+ end = mid -1 ;
53
+ }else {
54
+ begin = mid +1 ;
55
+ }
56
+ }else { //右边有序
57
+ if (target >nums [mid ]&&target <=nums [end ]){ //别忘了=
58
+ begin = mid +1 ;
59
+ }else {
60
+ end = mid -1 ;
61
+ }
62
+ }
63
+ }
64
+ return -1 ;
65
+ }
43
66
}
Original file line number Diff line number Diff line change
1
+ package code ;
2
+ /*
3
+ * 31. Search in Rotated Sorted Array II
4
+ * 题意:在翻转有序数组中查找指定数,数组中可能有相等的元素
5
+ * 难度:Medium
6
+ * 分类:Array, Binary Search
7
+ * 思路:多加了一种情况,就是 nums[mid]==nums[begin]==nums[end]
8
+ * Tips:注意边界判断,是否有等号
9
+ * lc33
10
+ */
11
+ public class lc81 {
12
+ public boolean search (int [] nums , int target ) {
13
+ int begin = 0 , end = nums .length -1 ;
14
+ while (begin <=end ){
15
+ int mid = (begin +end )/2 ;
16
+ if (target ==nums [mid ]) return true ;
17
+ if (nums [begin ]==nums [end ]&& nums [end ]==nums [mid ]) end --;
18
+ else if (nums [begin ]<=nums [mid ]){ //左边有序
19
+ if (target >=nums [begin ]&&target <nums [mid ]){
20
+ end = mid -1 ;
21
+ }else {
22
+ begin = mid +1 ;
23
+ }
24
+ }else if (nums [mid ]<nums [end ]){ //右边有序
25
+ if (target >nums [mid ]&&target <=nums [end ]){
26
+ begin = mid +1 ;
27
+ }else {
28
+ end = mid -1 ;
29
+ }
30
+ }else {
31
+ end --;
32
+ }
33
+ }
34
+ return false ;
35
+ }
36
+ }
Original file line number Diff line number Diff line change @@ -54,11 +54,13 @@ LeetCode 指南
54
54
| 032 [ Java] ( ./code/lc32.java )
55
55
| 033 [ Java] ( ./code/lc33.java )
56
56
| 034 [ Java] ( ./code/lc34.java )
57
+ | 034 [ Java] ( ./code/lc35.java )
57
58
| 036 [ Java] ( ./code/lc36.java )
58
59
| 038 [ Java] ( ./code/lc38.java )
59
60
| 039 [ Java] ( ./code/lc39.java )
60
61
| 041 [ Java] ( ./code/lc41.java )
61
62
| 042 [ Java] ( ./code/lc42.java )
63
+ | 043 [ Java] ( ./code/lc43.java )
62
64
| 044 [ Java] ( ./code/lc44.java )
63
65
| 046 [ Java] ( ./code/lc46.java )
64
66
| 048 [ Java] ( ./code/lc48.java )
You can’t perform that action at this time.
0 commit comments