leetcode 475 供暖器
冬季已经来临。 你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。
在加热器的加热半径范围内的每个房屋都可以获得供暖。
现在,给出位于一条水平线上的房屋 houses 和供暖器 heaters 的位置,请你找出并返回可以覆盖所有房屋的最小加热半径。
说明:所有供暖器都遵循你的半径标准,加热的半径也一样。
示例1
输入: houses = [1,2,3], heaters = [2]
输出: 1
解释: 仅在位置2上有一个供暖器。如果我们将加热半径设为1,那么所有房屋就都能得到供暖。
示例2
输入: houses = [1,2,3,4], heaters = [1,4]
输出: 1
解释: 在位置1, 4上有两个供暖器。我们需要将加热半径设为1,这样所有房屋就都能得到供暖。
示例3
输入:houses = [1,5], heaters = [2]
输出:3
思路
暴力解法,依次遍历每个房子的坐标,再遍历每个取暖器,找到距离房子最近的取暖器坐标。在所有这些距离的长度中找到最大值,这个距离的最大值就是供暖期半径的最小值。
代码
/**
* @param {number[]} houses
* @param {number[]} heaters
* @return {number}
*/
function findRadius(houses, heaters) {
let res = 0;
for (let i = 0; i < houses.length; i++) {
let dis = Number.MAX_SAFE_INTEGER;
for (let j = 0; j < heaters.length; j++) {
dis = Math.min(dis, Math.abs(houses[i] - heaters[j]));
}
res = Math.max(res, dis);
}
return res;
}
复杂度分析:
- 时间复杂度: O(N^2)
- 空间复杂度:O(1)
FEATURED TAGS
前端开发
H5
JavaScript
设计模式
browser
jQuery
源码分析
生活
leetcode
Array
Stack
Queue
Linked List
剑指offer
Binary Search Tree
Binary Tree
Breadth-First Search
Depth-First Search
String
Set
Binary Search
Sliding Window
Backtracking
Dynamic Programming
Two Pointers
Union Find
Sort
Bit Operation
Recursion
Map
Graph
Search
Hash
LinkedList
复盘
QuickSort
Trie
Design
MinHeap
Traverse
Min Heap
Node.js
BackEnd
SQL
MySQL
Design Patterns
Network
计算机网络
Python
SVG