LeetCode No.475供暖器

mac2024-04-06  32

参考解答 class Solution { public int findRadius(int[] houses, int[] heaters) { Arrays.sort(houses); Arrays.sort(heaters); int result=0; int j=0; for(int i=0;i<houses.length;i++){ while(j<heaters.length&&houses[i]>heaters[j]){ j++; } if(j==0) result=Math.max(result,heaters[j]-houses[i]); else if(j==heaters.length) return Math.max(result,houses[houses.length-1]-heaters[j-1]); else result=Math.max(result,Math.min(houses[i]-heaters[j-1],heaters[j]-houses[i])); } return result; } } 评论区: public int findRadius(int[] houses, int[] heaters) { // 先进行升序排列 Arrays.sort(houses); Arrays.sort(heaters); int radius = 0; int i = 0; for (int house : houses) { while (i < heaters.length && heaters[i] < house) { // 一直找到处于房屋右侧的热水器 i++; } if (i == 0) radius = Math.max(radius, heaters[i] - house); else if (i == heaters.length) // 最后一个热水器 return Math.max(radius, houses[houses.length-1] - heaters[heaters.length-1]); else // 房屋右侧的热水器和房屋左侧的热水器,取小的那个 radius = Math.max(radius, Math.min(heaters[i] - house, house - heaters[i - 1])); } return radius; }
最新回复(0)