475. Heaters

网友投稿 599 2022-09-06

475. Heaters

475. Heaters

Winter is coming! Your first job during the contest is to design a standard heater with fixed warm radius to warm all the houses.

Now, you are given positions of houses and heaters on a horizontal line, find out minimum radius of heaters so that all houses could be covered by those heaters.

So, your input will be the positions of houses and heaters seperately, and your expected output will be the minimum radius standard of heaters.

Note: Numbers of houses and heaters you are given are non-negative and will not exceed 25000. Positions of houses and heaters you are given are non-negative and will not exceed 10^9. As long as a house is in the heaters’ warm radius range, it can be warmed. All the heaters follow your radius standard and the warm radius will the same. Example 1:

Input: [1,2,3],[2]Output: 1Explanation: The only heater was placed in the position 2, and if we use the radius 1 standard, then all the

Example 2:

Input: [1,2,3,4],[1,4]Output: 1Explanation: The two heater was placed in the position 1 and 4. We need to use radius 1 standard, then all the

思路:

1、先对houses和heaters排序,result记录全局最小温暖半径,temp记录当前house的最小温暖半径。 2、依次为每个house查找最小的温暖半径(显然,每个house的最小半径只需考虑其左边最近的heaters和右边最近的heaters)。 3、对每一个house先查找位置不小于其位置的第一个heater,其位置为j。 4、若未找到,则当前house的最小温暖半径由左边最近的heaters决定。 5、若第一个heater的位置就不小于当前house的位置,则当前house的最小温暖半径由右边最近的heaters决定。 6、若找到的位置不小于当前house位置的第一个heater的位置大于当前house位置(若等于,则当前house的最小温暖半径等于0),则当前house的最小温暖半径是其与左边最近的heaters的距离和其与右边最近的heaters的距离的较小值。 7、若当前house的最小温暖半径大于全局result,则更新result。

class Solution { public int findRadius(int[] houses, int[] heaters) { Arrays.sort(houses); Arrays.sort(heaters); int result = 0; int temp = 0; int j = 0; for (int i = 0; i < houses.length; i++) { while (j < heaters.length && heaters[j] < houses[i]) j++; if (j == heaters.length) temp = houses[i] - heaters[j - 1]; else if (j == 0) temp = heaters[j] - houses[i]; else if (heaters[j] > houses[i]) temp = Math.min(heaters[j] - houses[i], houses[i] - heaters[j - 1]); if (temp > result) result = temp; } return

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:37. Sudoku Solver
下一篇:小议存储过程的优点
相关文章

 发表评论

暂时没有评论,来抢沙发吧~