|
2 | 2 |
|
3 | 3 | publicclass_34 {
|
4 | 4 |
|
5 |
| -publicint[]searchRange(int[]nums,inttarget) { |
6 |
| -int[]range =newint[2]; |
7 |
| -range[0] = -1; |
8 |
| -range[1] = -1; |
9 |
| -if (nums ==null ||nums.length ==0) { |
10 |
| -returnrange; |
11 |
| - } |
12 |
| -intstart =0; |
13 |
| -intend =nums.length -1; |
14 |
| -while (start +1 <end) { |
15 |
| -intmid =start + (end -start) /2; |
16 |
| -if (nums[mid] ==target) { |
17 |
| -intleft =mid; |
18 |
| -while (left -1 >=0 &&nums[left] ==nums[left -1]) { |
19 |
| -left--; |
| 5 | +publicstaticclassSolution1 { |
| 6 | +publicint[]searchRange(int[]nums,inttarget) { |
| 7 | +int[]range =newint[2]; |
| 8 | +range[0] = -1; |
| 9 | +range[1] = -1; |
| 10 | +if (nums ==null ||nums.length ==0) { |
| 11 | +returnrange; |
| 12 | + } |
| 13 | +intstart =0; |
| 14 | +intend =nums.length -1; |
| 15 | +while (start +1 <end) { |
| 16 | +intmid =start + (end -start) /2; |
| 17 | +if (nums[mid] ==target) { |
| 18 | +intleft =mid; |
| 19 | +while (left -1 >=0 &&nums[left] ==nums[left -1]) { |
| 20 | +left--; |
| 21 | + } |
| 22 | +range[0] =left; |
| 23 | +intright =mid; |
| 24 | +while (right +1 <nums.length &&nums[right] ==nums[right +1]) { |
| 25 | +right++; |
| 26 | + } |
| 27 | +range[1] =right; |
| 28 | +break; |
| 29 | + }elseif (nums[mid] <target) { |
| 30 | +start =mid; |
| 31 | + }else { |
| 32 | +end =mid; |
| 33 | + } |
| 34 | + } |
| 35 | + |
| 36 | +if (nums[start] ==target) { |
| 37 | +range[0] =start; |
| 38 | +while (start +1 <nums.length &&nums[start] ==nums[start +1]) { |
| 39 | +start++; |
20 | 40 | }
|
21 |
| -range[0] =left; |
22 |
| -intright =mid; |
23 |
| -while (right +1 <nums.length &&nums[right] ==nums[right +1]) { |
24 |
| -right++; |
| 41 | +range[1] =start; |
| 42 | + }elseif (nums[end] ==target) { |
| 43 | +range[1] =end; |
| 44 | +while (end -1 >=0 &&nums[end] ==nums[end -1]) { |
| 45 | +end--; |
25 | 46 | }
|
26 |
| -range[1] =right; |
27 |
| -break; |
28 |
| - }elseif (nums[mid] <target) { |
29 |
| -start =mid; |
30 |
| - }else { |
31 |
| -end =mid; |
| 47 | +range[0] =end; |
32 | 48 | }
|
| 49 | +returnrange; |
33 | 50 | }
|
| 51 | + } |
34 | 52 |
|
35 |
| -if (nums[start] ==target) { |
36 |
| -range[0] =start; |
37 |
| -while (start +1 <nums.length &&nums[start] ==nums[start +1]) { |
38 |
| -start++; |
| 53 | +publicstaticclassSolution2 { |
| 54 | +publicint[]searchRange(int[]nums,inttarget) { |
| 55 | +int[]result =newint[]{-1, -1}; |
| 56 | +if (nums ==null ||nums.length ==0) { |
| 57 | +returnresult; |
| 58 | + } |
| 59 | +if (nums[0] >target) { |
| 60 | +returnresult; |
39 | 61 | }
|
40 |
| -range[1] =start; |
41 |
| - }elseif (nums[end] ==target) { |
42 |
| -range[1] =end; |
43 |
| -while (end -1 >=0 &&nums[end] ==nums[end -1]) { |
44 |
| -end--; |
| 62 | +if (nums[nums.length -1] <target) { |
| 63 | +returnresult; |
| 64 | + } |
| 65 | +intleft =0; |
| 66 | +intright =nums.length -1; |
| 67 | +while (left <=right) { |
| 68 | +intmid =left + (right -left) /2; |
| 69 | +if (nums[mid] ==target) { |
| 70 | +while (mid -1 >=0 &&nums[mid] ==nums[mid -1]) { |
| 71 | +mid--; |
| 72 | + } |
| 73 | +result[0] =mid; |
| 74 | +while (mid +1 <nums.length &&nums[mid] ==nums[mid +1]) { |
| 75 | +mid++; |
| 76 | + } |
| 77 | +result[1] =mid; |
| 78 | +returnresult; |
| 79 | + }elseif (nums[mid] >target) { |
| 80 | +right =mid -1; |
| 81 | + }else { |
| 82 | +left =mid +1; |
| 83 | + } |
45 | 84 | }
|
46 |
| -range[0] =end; |
| 85 | +returnresult; |
47 | 86 | }
|
48 |
| -returnrange; |
49 | 87 | }
|
50 | 88 | }
|