zoukankan      html  css  js  c++  java
  • leecode第四百七十五题(供暖器)

    class Solution {
    public:
        int findRadius(vector<int>& houses, vector<int>& heaters) {
            int res=0;
            int len1=houses.size();
            int len2=heaters.size();
            sort(houses.begin(),houses.end());//先排序
            sort(heaters.begin(),heaters.end());
            int index_sta=0;
            int index_end=len2-1;
            for(int i=0;i<len1/2;i++)//对于第一个房屋和最后一个房屋,检测各自前后两个供暖器
            {
                while(index_sta<len2-1&&houses[i]-heaters[index_sta+1]>0)
                    index_sta++;
                while(index_end>0&&houses[len1-1-i]-heaters[index_end-1]<0)
                    index_end--;
                
                int temp1;//取前后供暖器位置最近的
                if(index_sta==len2-1)
                    temp1=abs(houses[i]-heaters[index_sta]);
                else
                    temp1=min(abs(houses[i]-heaters[index_sta]),abs(houses[i]-heaters[index_sta+1]));
                
                int temp2;
                if(index_end==0)
                    temp2=abs(houses[len1-1-i]-heaters[index_end]);
                else
                    temp2=min(abs(houses[len1-1-i]-heaters[index_end]),abs(houses[len1-1-i]-heaters[index_end-1]));
                
                if(max(temp1,temp2)>res)//取两个位置里最大的
                    res=max(temp1,temp2);
            }
            
            return res;
        }
    };

    分析:

    有点恶心。

  • 相关阅读:
    StateListDrawable状态选择器
    Shape
    每周随笔
    每周随笔
    每周随笔
    每周随笔
    每周随笔
    每周随笔
    每周随笔

  • 原文地址:https://www.cnblogs.com/CJT-blog/p/10820022.html
Copyright © 2011-2022 走看看