LeetCode | 475. Heaters 循环技巧题
2018-01-03 16:42
351 查看
Winteris coming! Your first job during the contest is to design a standard heaterwith fixed warm radius to warm all the houses.
Now,you are given positions of houses and heaters on a horizontal line, find outminimum 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 yourexpected output will be the minimum radius standard of heaters.
Note:
1. Numbers of houses and heaters you aregiven are non-negative and will not exceed 25000.
2. Positions of houses and heaters youare given are non-negative and will not exceed 10^9.
3. As long as a house is in the heaters'warm radius range, it can be warmed.
4. All the heaters follow your radiusstandard and the warm radius will the same.
Example1:
Input: [1,2,3],[2]
Output: 1
Explanation: The only heater was placed in theposition 2, and if we use the radius 1 standard, then all the houses can bewarmed.
Example2:
Input: [1,2,3,4],[1,4]
Output: 1
Explanation: The two heater was placed in theposition 1 and 4. We need to use radius 1 standard, then all the houses can bewarmed.
简单题,将两个数组排序,之后不断的求house数组里面的每一个房子离他最近的heater的距离,之后取所有这样的距离里面最大的一个就是我们要求的最短的散热范围
class Solution {
public:
intfindRadius(vector<int>& houses, vector<int>& heaters) {
sort(houses.begin(), houses.end());
sort(heaters.begin(), heaters.end());
int index = 0; int m = -1;
for (int i = 0; i < houses.size(); i++)
{
while (index <heaters.size()&& heaters[index] < houses[i]) index++;
if (index == heaters.size()) m =max(m, houses[i] - heaters[index - 1]);
else if(index==0)
{
m = max(m, heaters[0] -houses[i]);
}
else
{
m = max(m,min(houses[i]-heaters[index-1],heaters[index]-houses[i]));
}
}
return m;
}
};
Now,you are given positions of houses and heaters on a horizontal line, find outminimum 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 yourexpected output will be the minimum radius standard of heaters.
Note:
1. Numbers of houses and heaters you aregiven are non-negative and will not exceed 25000.
2. Positions of houses and heaters youare given are non-negative and will not exceed 10^9.
3. As long as a house is in the heaters'warm radius range, it can be warmed.
4. All the heaters follow your radiusstandard and the warm radius will the same.
Example1:
Input: [1,2,3],[2]
Output: 1
Explanation: The only heater was placed in theposition 2, and if we use the radius 1 standard, then all the houses can bewarmed.
Example2:
Input: [1,2,3,4],[1,4]
Output: 1
Explanation: The two heater was placed in theposition 1 and 4. We need to use radius 1 standard, then all the houses can bewarmed.
简单题,将两个数组排序,之后不断的求house数组里面的每一个房子离他最近的heater的距离,之后取所有这样的距离里面最大的一个就是我们要求的最短的散热范围
class Solution {
public:
intfindRadius(vector<int>& houses, vector<int>& heaters) {
sort(houses.begin(), houses.end());
sort(heaters.begin(), heaters.end());
int index = 0; int m = -1;
for (int i = 0; i < houses.size(); i++)
{
while (index <heaters.size()&& heaters[index] < houses[i]) index++;
if (index == heaters.size()) m =max(m, houses[i] - heaters[index - 1]);
else if(index==0)
{
m = max(m, heaters[0] -houses[i]);
}
else
{
m = max(m,min(houses[i]-heaters[index-1],heaters[index]-houses[i]));
}
}
return m;
}
};
相关文章推荐
- LeetCode | 7. Reverse Integer 数字反向循环技巧题
- LeetCode | 55. Jump Game循环技巧题
- LeetCode | 219. Contains Duplicate II 循环技巧题高效率方法
- LeetCode | 121. Best Time to Buy and Sell Stock循环技巧题
- LeetCode | 27. Remove Element贪心算法循环技巧题
- LeetCode | 6. ZigZag Conversion 循环技巧题
- LeetCode | 1. Two Sum 简单循环技巧题
- LeetCode | 27. Remove Element循环技巧题
- LeetCode | 16. 3Sum Closest 循环技巧题
- LeetCode | 762. Prime Number of Set Bits in Binary Representation 简单题 二进制技巧题
- leetcode解题之475. Heaters Java版(加热器)
- 控制台文字矩阵、菱形排列(充分展示用逻辑替代内循环的处理技巧)
- LeetCode 374 使用循环代替递归的二分查找从而避免栈溢出的错误
- LeetCode | 731. My Calendar II 区域覆盖技巧题
- LeetCode | 732. My Calendar III 区域覆盖技巧题
- UVA1584 - Circular Sequence 循环字符串比较的技巧
- leetcode:程序猿面试技巧
- [Leetcode] 475. Heaters 解题报告
- LeetCode 61. Rotate List 链表的右循环
- LeetCode | Rotate List(循环右移链表)