Skip to content

Commit 46aa01d

Browse files
committed
704.二分查找
1 parent 38db720 commit 46aa01d

File tree

3 files changed

+22
-0
lines changed

3 files changed

+22
-0
lines changed

leetcode_Java/DoneTitle.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@
105105
674. 最长连续递增序列
106106
695. 岛屿的最大面积
107107
698. 划分为k个相等的子集
108+
704. 二分查找
108109
707. 设计链表
109110
712. 两个字符串的最小ASCII删除和
110111
714. 买卖股票的最佳时机含手续费

leetcode_Java/Solution0033.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public int search(int[] nums, int target) {
1717

1818

1919
/*
20+
简单题“704.二分查找”
2021
二分查找:时间复杂度O(logn)
2122
1、左右索引求和除以2,得到中点索引,如果中点索引对应值为目标值,则返回中点索引
2223
2、在常规二分查找的时候查看当前 mid 为分割位置分割出来的两个部分 [l, mid-1] 和 [mid+1, r] 哪个部分是有序的,并判断 target 是否在有序的部分,从而决定改变二分查找的上下界

leetcode_Java/Solution0704.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
// 704. 二分查找
2+
3+
4+
// 进阶题“33.搜索旋转排序数组”
5+
class Solution {
6+
public int search(int[] nums, int target) {
7+
int left = 0, right = nums.length - 1;
8+
while (left <= right) {
9+
int mid = (left + right) / 2;
10+
if (nums[mid] == target) {
11+
return mid;
12+
} else if (nums[mid] > target) {
13+
right = mid - 1;
14+
} else {
15+
left = mid + 1;
16+
}
17+
}
18+
return -1;
19+
}
20+
}

0 commit comments

Comments
 (0)