File tree Expand file tree Collapse file tree 3 files changed +42
-0
lines changed Expand file tree Collapse file tree 3 files changed +42
-0
lines changed Original file line number Diff line number Diff line change 15
15
25. K 个一组翻转链表
16
16
31. 下一个排列
17
17
33. 搜索旋转排序数组
18
+ 34. 在排序数组中查找元素的第一个和最后一个位置
18
19
37. 解数独
19
20
39. 组合总和
20
21
40. 组合总和 II
Original file line number Diff line number Diff line change 141
141
15. 三数之和
142
142
31. 下一个排列
143
143
33. 搜索旋转排序数组
144
+ 34. 在排序数组中查找元素的第一个和最后一个位置
144
145
41. 缺失的第一个正数
145
146
54. 螺旋矩阵
146
147
56. 合并区间
Original file line number Diff line number Diff line change
1
+ // 34. 在排序数组中查找元素的第一个和最后一个位置
2
+
3
+
4
+ /*
5
+ 二分查找:
6
+ 1、二分查找,找到中点位置的值,比较判断是否为目标值
7
+ 2、若不是目标值,则缩小一半的查找区间
8
+ 3、若是目标值,则向两边扩散查找左右边界
9
+ */
10
+ class Solution {
11
+ public int [] searchRange (int [] nums , int target ) {
12
+ int n = nums .length ;
13
+ int left = 0 , right = n - 1 ;
14
+ int [] res = new int [2 ];
15
+ while (left <= right ) {
16
+ int mid = (left + right ) / 2 ;
17
+ if (nums [mid ] == target ) {
18
+ for (int i = mid ; i >= 0 ; i --) {
19
+ if (nums [i ] != target ) {
20
+ break ;
21
+ }
22
+ res [0 ] = i ;
23
+ }
24
+ for (int i = mid ; i < n ; i ++) {
25
+ if (nums [i ] != target ) {
26
+ break ;
27
+ }
28
+ res [1 ] = i ;
29
+ }
30
+ return res ;
31
+ } else if (nums [mid ] < target ) {
32
+ left = mid + 1 ;
33
+ } else {
34
+ right = mid - 1 ;
35
+ }
36
+ }
37
+ Arrays .fill (res , -1 );
38
+ return res ;
39
+ }
40
+ }
You can’t perform that action at this time.
0 commit comments