参考解答
class Solution {
public int findRadius(int[] houses
, int[] heaters
) {
Arrays
.sort(houses
);
Arrays
.sort(heaters
);
int result
=0;
int j
=0;
for(int i
=0;i
<houses
.length
;i
++){
while(j
<heaters
.length
&&houses
[i
]>heaters
[j
]){
j
++;
}
if(j
==0)
result
=Math
.max(result
,heaters
[j
]-houses
[i
]);
else if(j
==heaters
.length
)
return Math
.max(result
,houses
[houses
.length
-1]-heaters
[j
-1]);
else
result
=Math
.max(result
,Math
.min(houses
[i
]-heaters
[j
-1],heaters
[j
]-houses
[i
]));
}
return result
;
}
}
评论区:
public int findRadius(int[] houses
, int[] heaters
) {
Arrays
.sort(houses
);
Arrays
.sort(heaters
);
int radius
= 0;
int i
= 0;
for (int house
: houses
) {
while (i
< heaters
.length
&& heaters
[i
] < house
) {
i
++;
}
if (i
== 0)
radius
= Math
.max(radius
, heaters
[i
] - house
);
else if (i
== heaters
.length
)
return Math
.max(radius
, houses
[houses
.length
-1] - heaters
[heaters
.length
-1]);
else
radius
= Math
.max(radius
, Math
.min(heaters
[i
] - house
, house
- heaters
[i
- 1]));
}
return radius
;
}
转载请注明原文地址: https://mac.8miu.com/read-488518.html