acwing908.最大不相交区间数量-java
贪心算法
原题链接
给定 N 个闭区间 [ai,bi],请你在数轴上选择若干区间,使得选中的区间之间互不相交(包括端点)。
输出可选取区间的最大数量。
输入格式
第一行包含整数 N,表示区间数。
接下来 N 行,每行包含两个整数 ai,bi,表示一个区间的两个端点。
输出格式
输出一个整数,表示可选取区间的最大数量。
数据范围
1≤N≤105,
−109≤ai≤bi≤109
输入样例:
3
-1 1
2 4
3 5
输出样例:
2
二、算法分析
1.这和上题代码一样
代码如下(示例):
import java.util.Scanner;
import java.util.Arrays;
public class Main{
static int N = (int)1e5+10;
static Node[] range = new Node[N] ;
static int n ;
public static void main(String[] args){
Scanner san = new Scanner(System.in);
n = san.nextInt();
for(int i = 0 ; i < n ;i++){
int a = san.nextInt();
int b = san.nextInt();
range[i] = new Node(a,b);
}
Arrays.sort(range,0,n,(o1,o2) -> o1.r - o2.r );//按照右端点排序
int t = Integer.MIN_VALUE,cnt = 0 ;
for(int i = 0 ; i < n ; i ++){
if(range[i].l > t){
t= range[i].r;
cnt++;
}
}
System.out.println(cnt );
}
static class Node{
int l ;
int r ;
public Node(int l , int r ){
this.l = l ;
this.r = r ;
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)