From 9e2990cdc8fed05c2ca44f537df82ca8e864ed54 Mon Sep 17 00:00:00 2001 From: liu13 <1099976891@qq.com> Date: Sun, 17 Mar 2019 15:00:04 +0800 Subject: [PATCH] 20190317 --- code/lc33.java | 25 ++++++++++++++++++++++++- code/lc81.java | 36 ++++++++++++++++++++++++++++++++++++ readme.md | 2 ++ 3 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 code/lc81.java diff --git a/code/lc33.java b/code/lc33.java index 2f30c9b..f330783 100644 --- a/code/lc33.java +++ b/code/lc33.java @@ -6,7 +6,8 @@ package code; * 难度:Medium * 分类:Array, Binary Search * 思路:二分查找的思路,多了一步判断,判断哪部分有序,是否在这部分中 - * Tips:注意边界判断,是否有等号 + * Tips:注意边界判断,是否有等号。挺麻烦的,没有输入样本,很难想通边边角角 + * lc81 */ public class lc33 { public static void main(String[] args) { @@ -40,4 +41,26 @@ public class lc33 { } 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]&&targetnums[mid]&&target<=nums[end]){ //别忘了= + begin = mid+1; + }else{ + end = mid-1; + } + } + } + return -1; + } } diff --git a/code/lc81.java b/code/lc81.java new file mode 100644 index 0000000..6c089e0 --- /dev/null +++ b/code/lc81.java @@ -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]&&targetnums[mid]&&target<=nums[end]){ + begin = mid+1; + }else{ + end = mid-1; + } + }else{ + end--; + } + } + return false; + } +} diff --git a/readme.md b/readme.md index a19643f..04d96b2 100644 --- a/readme.md +++ b/readme.md @@ -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) -- GitLab