Skip to content

Commit 9e2990c

Browse files
committed
20190317
1 parent a6ad915 commit 9e2990c

File tree

3 files changed

+62
-1
lines changed

3 files changed

+62
-1
lines changed

code/lc33.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
* 难度:Medium
77
* 分类:Array, Binary Search
88
* 思路:二分查找的思路,多了一步判断,判断哪部分有序,是否在这部分中
9-
* Tips:注意边界判断,是否有等号
9+
* Tips:注意边界判断,是否有等号。挺麻烦的,没有输入样本,很难想通边边角角
10+
* lc81
1011
*/
1112
public class lc33 {
1213
public static void main(String[] args) {
@@ -40,4 +41,26 @@ public static int search(int[] nums, int target) {
4041
}
4142
return -1;
4243
}
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+
}
4366
}

code/lc81.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
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+
}

readme.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,13 @@ LeetCode 指南
5454
| 032 [Java](./code/lc32.java)
5555
| 033 [Java](./code/lc33.java)
5656
| 034 [Java](./code/lc34.java)
57+
| 034 [Java](./code/lc35.java)
5758
| 036 [Java](./code/lc36.java)
5859
| 038 [Java](./code/lc38.java)
5960
| 039 [Java](./code/lc39.java)
6061
| 041 [Java](./code/lc41.java)
6162
| 042 [Java](./code/lc42.java)
63+
| 043 [Java](./code/lc43.java)
6264
| 044 [Java](./code/lc44.java)
6365
| 046 [Java](./code/lc46.java)
6466
| 048 [Java](./code/lc48.java)

0 commit comments

Comments
 (0)