LeetCode 436. 寻找右区间

news/2024/11/22 20:50:54/

436. 寻找右区间

 【二分】我们将左端点和下标组成一个元祖,按照左端点从小到大排序,然后对每个区间寻找>=右端点的最小值即可。

二分查找的时候注意当nums[mid]>=target的时候我们就往左边找,这样结束后左边都是<target的值,同时right为左边的右边界,left为右边的左边界,所以直接返回left就行了。

插一句题外话,二分查找的精髓其实是维护一个左区间,也就是让不让左区间包含==的情况,而这主要通过right = mid - 1的条件判定来决定,如果==的时候让right = mid - 1,那么左边就不包括==的情况了。 

class Solution {public int binarySearch(List<int[]> list, int target){int left = 0, right = list.size() - 1;while(left <= right){int mid = (left + right) >>> 1;if(list.get(mid)[0] >= target) right = mid - 1;else left = mid + 1;}return left;}public int[] findRightInterval(int[][] intervals) {List<int[]> list = new ArrayList();int i = 0, n = intervals.length;for(var it: intervals){list.add(new int[] {it[0], i++});}Collections.sort(list, (x, y)->{return x[0] - y[0];});int[] ans = new int[n];for(i = 0; i < n; i++){int[] tmp = intervals[i];int idx = binarySearch(list, tmp[1]);if(idx < 0 || idx >= n) ans[i] = -1;else ans[i] = list.get(idx)[1];}return ans;}
}


http://www.ppmy.cn/news/271350.html

相关文章

leetcode 436. Find Right Interval | 436. 寻找右区间(二分查找不小于某值的第一个位置)

题目 https://leetcode.com/problems/find-right-interval/ 题解 这题考察点不难&#xff0c;就是个普通的二分查找。详细过程是&#xff1a; 因为 start 是唯一的&#xff0c;所以先用 map 存储每一个 start 的对应下标。然后根据 start 的大小&#xff0c;对数组进行排序…

#436. 子串的最大差(单调栈)

题目链接 http://oj.daimayuan.top/problem/436 题面 思路 我们考虑每一个点作为一个区间最小值和区间最大值的次数&#xff0c;那么我们可以从两边延申&#xff0c;对于区间最小值而言找到左边第一个大于自身的数&#xff0c;对于右边也找到大于第一个大于自身的数&#xf…

LeetCode 每日一题——436. 寻找右区间

1.题目描述 436. 寻找右区间 给你一个区间数组 intervals &#xff0c;其中 intervals[i] [starti, endi] &#xff0c;且每个 starti 都 不同 。 区间 i 的 右侧区间 可以记作区间 j &#xff0c;并满足 startj > endi &#xff0c;且 startj 最小化 。 返回一个由每个…

Leetcode刷题 | 二分查找篇 | 436

目录 436. Find Right Interval方法一 二分查找1 方法思想2 代码实现3 复杂度分析4 涉及到知识点 方法二 双指针 436. Find Right Interval 题目链接&#xff1a;https://leetcode.cn/problems/find-right-interval/ 方法一 二分查找 1 方法思想 建立一个二维数组&#xff…

AcWing 436. 立体图

小渊是个聪明的孩子&#xff0c;他经常会给周围的小朋友们将写自己认为有趣的内容。最近&#xff0c;他准备给小朋友们讲解立体图&#xff0c;请你帮他画出立体图。 小渊有一块面积为 mn 的矩形区域&#xff0c;上面有 mn 个边长为 1 的格子&#xff0c;每个格子上堆了一些同样…

#423

第一次参加CF比赛T^T真是惊险刺激啊&#xff01;大佬太多了&#xff01;&#xff01;&#xff01;膜拜大佬&#xff01; A. Restaurant Tables time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output In a small res…

Day435436.支付系统 -谷粒商城

支付系统 一、基本概念 1、加密 ①对称加密 什么是对称加密 所谓对称加密&#xff0c;就是发送方要给接收方在网络上发送一段明文&#xff0c;但是不能直接发。 发送方需要加密&#xff0c;对称加密指的就是加密和解密用的是同一把密钥。 假设发送方准备了一串明文&#…