LeetCode 五月打卡-day20
Posted 王六六的IT日常
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 五月打卡-day20相关的知识,希望对你有一定的参考价值。
520快乐呀
436. 寻找右区间
【宫水三叶】一题双解 :「排序 + 二分」&「双指针(莫队思想)」
【负雪明烛】动画题解:二分查找
class Solution
public int[] findRightInterval(int[][] intervals)
int n = intervals.length;
int[] starts = new int[n];//记录每个区间的开始值
HashMap<Integer,Integer> map = new HashMap<>();//记录开始值在intervals数组中对应的下标
int[] ans = new int[n];
for (int i = 0; i < n; i++)
starts[i] = intervals[i][0];
map.put(intervals[i][0],i);
Arrays.sort(starts);//排序
//二分
for (int i = 0; i < n; i++)
int right = n - 1, left = 0;
while (right > left)//找大于intervals[i][1]的最小值
int mid = (right + left) >> 1;
if (starts[mid] < intervals[i][1])
left = mid + 1;
else right = mid;
if (starts[left] < intervals[i][1]) ans[i] = -1;
else ans [i] = map.get(starts[left]);
return ans;
以上是关于LeetCode 五月打卡-day20的主要内容,如果未能解决你的问题,请参考以下文章