File tree Expand file tree Collapse file tree 4 files changed +102
-16
lines changed
solution/0000-0099/0033.Search in Rotated Sorted Array Expand file tree Collapse file tree 4 files changed +102
-16
lines changed Original file line number Diff line number Diff line change 3030
3131<!-- 这里可写通用的实现逻辑 -->
3232
33+ 二分查找。
34+
3335<!-- tabs:start -->
3436
3537### ** Python3**
3638
3739<!-- 这里可写当前语言的特殊实现逻辑 -->
3840
3941``` python
40-
42+ class Solution :
43+ def search (self , nums : List[int ], target : int ) -> int :
44+ l, r = 0 , len (nums) - 1
45+ while l <= r:
46+ mid = (l + r) >> 1
47+ if nums[mid] == target:
48+ return mid
49+ if nums[mid] > target:
50+ if nums[mid] >= nums[r] and target < nums[l]:
51+ l = mid + 1
52+ else :
53+ r = mid - 1
54+ else :
55+ if nums[mid] <= nums[l] and target > nums[r]:
56+ r = mid - 1
57+ else :
58+ l = mid + 1
59+ return - 1
4160```
4261
4362### ** Java**
4463
4564<!-- 这里可写当前语言的特殊实现逻辑 -->
4665
4766``` java
48-
67+ class Solution {
68+ public int search (int [] nums , int target ) {
69+ int l = 0 , r = nums. length - 1 ;
70+ while (l <= r) {
71+ int mid = (l + r) >>> 1 ;
72+ if (nums[mid] == target) return mid;
73+ if (nums[mid] > target) {
74+ if (nums[mid] >= nums[r] && target < nums[l]) l = mid + 1 ;
75+ else r = mid - 1 ;
76+ } else {
77+ if (nums[mid] <= nums[l] && target > nums[r]) r = mid - 1 ;
78+ else l = mid + 1 ;
79+ }
80+ }
81+ return - 1 ;
82+ }
83+ }
4984```
5085
5186### ** C++**
Original file line number Diff line number Diff line change 3939### ** Python3**
4040
4141``` python
42-
42+ class Solution :
43+ def search (self , nums : List[int ], target : int ) -> int :
44+ l, r = 0 , len (nums) - 1
45+ while l <= r:
46+ mid = (l + r) >> 1
47+ if nums[mid] == target:
48+ return mid
49+ if nums[mid] > target:
50+ if nums[mid] >= nums[r] and target < nums[l]:
51+ l = mid + 1
52+ else :
53+ r = mid - 1
54+ else :
55+ if nums[mid] <= nums[l] and target > nums[r]:
56+ r = mid - 1
57+ else :
58+ l = mid + 1
59+ return - 1
4360```
4461
4562### ** Java**
4663
4764``` java
48-
65+ class Solution {
66+ public int search (int [] nums , int target ) {
67+ int l = 0 , r = nums. length - 1 ;
68+ while (l <= r) {
69+ int mid = (l + r) >>> 1 ;
70+ if (nums[mid] == target) return mid;
71+ if (nums[mid] > target) {
72+ if (nums[mid] >= nums[r] && target < nums[l]) l = mid + 1 ;
73+ else r = mid - 1 ;
74+ } else {
75+ if (nums[mid] <= nums[l] && target > nums[r]) r = mid - 1 ;
76+ else l = mid + 1 ;
77+ }
78+ }
79+ return - 1 ;
80+ }
81+ }
4982```
5083
5184### ** C++**
Original file line number Diff line number Diff line change 11class Solution {
2- public int search (int [] A , int target ) {
3- if ( A == null || A .length == 0 ) return - 1 ;
4- int low = 0 , high = A . length - 1 ;
5- while ( low <= high ) {
6- int mid = ( low + high ) >>> 1 ;
7- if (target < A [mid ]) {
8- if (A [mid ] >= A [ high ] && target < A [ low ]) low = mid + 1 ;
9- else high = mid - 1 ;
10- } else if ( target > A [ mid ]) {
11- if (A [ low ] >= A [ mid ] && target > A [ high ]) high = mid - 1 ;
12- else low = mid + 1 ;
13- } else return mid ;
2+ public int search (int [] nums , int target ) {
3+ int l = 0 , r = nums .length - 1 ;
4+ while ( l <= r ) {
5+ int mid = ( l + r ) >>> 1 ;
6+ if ( nums [ mid ] == target ) return mid ;
7+ if (nums [mid ] > target ) {
8+ if (nums [mid ] >= nums [ r ] && target < nums [ l ]) l = mid + 1 ;
9+ else r = mid - 1 ;
10+ } else {
11+ if (nums [ mid ] <= nums [ l ] && target > nums [ r ]) r = mid - 1 ;
12+ else l = mid + 1 ;
13+ }
1414 }
1515 return -1 ;
1616 }
Original file line number Diff line number Diff line change 1+ class Solution :
2+ def search (self , nums : List [int ], target : int ) -> int :
3+ l , r = 0 , len (nums ) - 1
4+ while l <= r :
5+ mid = (l + r ) >> 1
6+ if nums [mid ] == target :
7+ return mid
8+ if nums [mid ] > target :
9+ if nums [mid ] >= nums [r ] and target < nums [l ]:
10+ l = mid + 1
11+ else :
12+ r = mid - 1
13+ else :
14+ if nums [mid ] <= nums [l ] and target > nums [r ]:
15+ r = mid - 1
16+ else :
17+ l = mid + 1
18+ return - 1
You can’t perform that action at this time.
0 commit comments