博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode 475. Heaters
阅读量:6977 次
发布时间:2019-06-27

本文共 1360 字,大约阅读时间需要 4 分钟。

最大化最小值的问题。

方法一:直接做,顺便复习一下迭代器和lower_bound的用法。

class Solution {public:    int findRadius(vector
& houses, vector
& heaters) { sort(houses.begin(),houses.end()); sort(heaters.begin(),heaters.end()); int maxdis=0; for (int i=0;i
=heaters[heaters.size()-1]){ maxdis=max(houses[i]-heaters[heaters.size()-1],maxdis); }else{ auto pos=lower_bound(heaters.begin(),heaters.end(),houses[i]); int tmp=min(houses[i]-*(--pos), *pos-houses[i]); maxdis = max(tmp,maxdis); } } return maxdis; }};

 

方法二:分别计算每个house左面和右面距离最近的heater。时间复杂度比上述要低。学习一下 *max_element 和 *min_element 的用法。

class Solution {public:    int findRadius(vector
& houses, vector
& heaters) { int m=houses.size(), n=heaters.size(); sort(houses.begin(),houses.end()); sort(heaters.begin(),heaters.end()); vector
res(m,INT_MAX); for (int i=0,j=0;i
=0&&j>=0;){ if (houses[i]>=heaters[j]){res[i] = min(houses[i]-heaters[j],res[i]); --i;} else --j; } return *max_element(res.begin(),res.end()); }};

 

转载于:https://www.cnblogs.com/hankunyan/p/9117838.html

你可能感兴趣的文章
Java 社区领袖联合发文:别慌,Java 仍然是免费的!
查看>>
几个定制 iTerm2 的 tip
查看>>
杨老师课堂_Java核心技术下之控制台模拟记事本案例 ...
查看>>
好程序员分享24个canvas基础知识小结
查看>>
大数据处理也要安全--关于MaxCompute的安全科普
查看>>
Django使用数据库(Mariadb/Mysql)
查看>>
广东“基因编辑婴儿事件”调查组:将对贺建奎依法依规严肃处理
查看>>
在macos上基于python2.7安装PyQt5
查看>>
69亿美元英伟达史上最大收购!这家基金又赢了
查看>>
阿里云双12服务器和阿里云双12数据库活动又开始了
查看>>
百度成立小度蓝牙联盟,DMA+小度App打造蓝牙语音风口
查看>>
第二十章:异步和文件I/O.(十三)
查看>>
第四范式完成C轮融资,金额超10亿元
查看>>
Java图形化:布局方式
查看>>
python 帮助文档、自我解释
查看>>
helm安装配置
查看>>
离线安装k8s 1.9.0
查看>>
my项目的总结2015.8.26编
查看>>
Linux 基金会宣布红队项目,致力于孵化开源安全工具
查看>>
索尼发布无人机相机专利,支持眼部对焦
查看>>