|
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 | } |