Advertisement
nikunjsoni

475

May 14th, 2021
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.85 KB | None | 0 0
  1. class Solution {
  2. public:
  3.     int findRadius(vector<int>& houses, vector<int>& heaters) {
  4.         sort(houses.begin(), houses.end());
  5.         sort(heaters.begin(), heaters.end());
  6.         vector<int> dist(houses.size(), INT_MAX);
  7.        
  8.         // Find dist of nearest RHS heater.
  9.         for(int i=0, j=0; i<houses.size() && j<heaters.size(); i++){
  10.             if(houses[i] <= heaters[j])
  11.                 dist[i] = (heaters[j]-houses[i]);
  12.             else
  13.                 j++, i--;
  14.         }
  15.        
  16.         // Find dist of nearest LHS heater.
  17.         for(int i=houses.size()-1, j=heaters.size()-1; i>=0 && j>=0; i--){
  18.             if(houses[i] >= heaters[j])
  19.                 dist[i] = min(dist[i], (houses[i]-heaters[j]));
  20.             else
  21.                 j--, i++;
  22.         }
  23.         return *max_element(dist.begin(), dist.end());
  24.     }
  25. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement