leetcode每日一题(475.供暖器)
Posted 猿猿HHH
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode每日一题(475.供暖器)相关的知识,希望对你有一定的参考价值。
题目:
遇到无保持原数组元素要求和没时间复杂度要求的问题可以尝试排序寻找思路:
Arrays.sort(heaters);
Arrays.sort(houses);
一直找到处于房屋右侧的供暖器:
while(i<heaters.length&&heaters[i]<house) i++;
若遇到原房屋的最后一个房屋中含有供暖期,直接返回结果:
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]));
提交的代码如下:
class Solution {
public int findRadius(int[] houses, int[] heaters) {
Arrays.sort(heaters);
Arrays.sort(houses);
int i=0,radius=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;
}
}
提示:可以尝试二分查找的思路,这里由于题目没有时间复杂度要求就不使用这方法了
以上是关于leetcode每日一题(475.供暖器)的主要内容,如果未能解决你的问题,请参考以下文章
leetcode 工作每日一题 475. 供暖器 (二分 stl)
LeetCode 997. 找到小镇的法官 / 475. 供暖器 / 1154. 一年中的第几天