Skip to content

Commit

Permalink
20190317
Browse files Browse the repository at this point in the history
  • Loading branch information
mJackie committed Mar 17, 2019
1 parent a6ad915 commit 9e2990c
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 1 deletion.
25 changes: 24 additions & 1 deletion code/lc33.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@
* 难度:Medium
* 分类:Array, Binary Search
* 思路:二分查找的思路,多了一步判断,判断哪部分有序,是否在这部分中
* Tips:注意边界判断,是否有等号
* Tips:注意边界判断,是否有等号。挺麻烦的,没有输入样本,很难想通边边角角
* lc81
*/
public class lc33 {
public static void main(String[] args) {
Expand Down Expand Up @@ -40,4 +41,26 @@ public static int search(int[] nums, int target) {
}
return -1;
}

public int search2(int[] nums, int target) {
int begin = 0, end = nums.length-1;
while(begin<=end){
int mid = (begin+end)/2;
if(target==nums[mid]) return mid;
if(nums[begin]<=nums[mid]){ //左边有序,别忘了=,begin==end
if(target>=nums[begin]&&target<nums[mid]){
end = mid-1;
}else{
begin = mid+1;
}
}else{ //右边有序
if(target>nums[mid]&&target<=nums[end]){ //别忘了=
begin = mid+1;
}else{
end = mid-1;
}
}
}
return -1;
}
}
36 changes: 36 additions & 0 deletions code/lc81.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package code;
/*
* 31. Search in Rotated Sorted Array II
* 题意:在翻转有序数组中查找指定数,数组中可能有相等的元素
* 难度:Medium
* 分类:Array, Binary Search
* 思路:多加了一种情况,就是 nums[mid]==nums[begin]==nums[end]
* Tips:注意边界判断,是否有等号
* lc33
*/
public class lc81 {
public boolean search(int[] nums, int target) {
int begin = 0, end = nums.length-1;
while(begin<=end){
int mid = (begin+end)/2;
if(target==nums[mid]) return true;
if(nums[begin]==nums[end]&& nums[end]==nums[mid]) end--;
else if(nums[begin]<=nums[mid]){ //左边有序
if(target>=nums[begin]&&target<nums[mid]){
end = mid-1;
}else{
begin = mid+1;
}
}else if(nums[mid]<nums[end]){ //右边有序
if(target>nums[mid]&&target<=nums[end]){
begin = mid+1;
}else{
end = mid-1;
}
}else{
end--;
}
}
return false;
}
}
2 changes: 2 additions & 0 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,13 @@ LeetCode 指南
| 032 [Java](./code/lc32.java)
| 033 [Java](./code/lc33.java)
| 034 [Java](./code/lc34.java)
| 034 [Java](./code/lc35.java)
| 036 [Java](./code/lc36.java)
| 038 [Java](./code/lc38.java)
| 039 [Java](./code/lc39.java)
| 041 [Java](./code/lc41.java)
| 042 [Java](./code/lc42.java)
| 043 [Java](./code/lc43.java)
| 044 [Java](./code/lc44.java)
| 046 [Java](./code/lc46.java)
| 048 [Java](./code/lc48.java)
Expand Down

0 comments on commit 9e2990c

Please sign in to comment.