475. Heaters
来源:互联网 发布:手机自动录像软件 编辑:程序博客网 时间:2024/06/05 08:49
该题目简而言之,就是找出每个house的min heater(距离最近的heater),算出radius(半径),再找出所有house对应的radius中的最大值,即为标准供热半径。
binary search可以找出有序数组中需要查找的数字
简单举例:
houses[14]
heaters[1,8,10,20,32]
只有一间屋子,位于14这个位置,左侧最近的heater位于10,右侧最近的heater位于20,min(14-10,20,14)=4,所以14这件屋子需要供热的话,radius=4即可
(这是最基本的思路)
下述算法给出的是对基本算法略微改进的算法,希望读者在基本思路的基础上去理解下述算法。
class Solution(object): def findRadius(self, houses, heaters): """ :type houses: List[int] :type heaters: List[int] :rtype: int """ heaters = sorted(heaters) houses = sorted(houses) i = radius = 0 for house in houses: while i < len(heaters) - 1 and house > heaters[i]: i += 1 if i != 0: radius = max(radius, min(house - heaters[i - 1],abs(house - heaters[i]))) else: radius = max(abs(house - heaters[0]), radius) return radius
0 0
- 475. Heaters
- 475. Heaters*
- 475. Heaters
- 475. Heaters
- 475. Heaters
- 475. Heaters
- 475. Heaters
- 475. Heaters
- 475. Heaters
- 475. Heaters
- 475. Heaters
- LeetCode 475. Heaters
- LeetCode 475. Heaters
- 【Leetcode】475. Heaters
- 【LeetCode】 475. Heaters
- Leetcode-475. Heaters
- [leetcode]475. Heaters
- [leetcode]475. Heaters
- UVA-10462-Is There A Second Way Left? (次小生成树带重边)
- IntentService简析
- FMDB使用方法
- 欢迎使用CSDN-markdown编辑器
- jdk配置法安装,让你更熟
- 475. Heaters
- 【Linux】用gcc生成静态库和动态库
- 素数筛法系列
- javaweb的servlet使用指南
- Web安全与防御措施
- 每周总结
- platform总线分析
- eclipse提交项目到git
- Crackme 2