题解 | #视野争夺#
视野争夺
http://www.nowcoder.com/questionTerminal/61e1e66e39f348cdb6495de91ac36a41
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int L = scanner.nextInt();
List<int[]> list = new ArrayList<>();
for (int i = 0; i < n; i++) {
int[] tmp = new int[2];
tmp[0] = scanner.nextInt();
tmp[1] = scanner.nextInt();
list.add(tmp);
}
list.sort(((o1, o2) -> {
return o1[0] == o2[0] ? o1[1] - o2[1] : o1[0] - o2[0];
}));
int find = 0,res = 0;
boolean f = false;
for (int i = 0; i < n;) {
int x = list.get(i)[0],y = list.get(i)[1];
maxY = Math.max(maxY,y);
if(maxY >= L){
f = true;
break;
}
i++;
}
find = maxY;
res++;
if(f)
break;
}
System.out.println(find >= L ? res : -1);
}
}
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int L = scanner.nextInt();
List<int[]> list = new ArrayList<>();
for (int i = 0; i < n; i++) {
int[] tmp = new int[2];
tmp[0] = scanner.nextInt();
tmp[1] = scanner.nextInt();
list.add(tmp);
}
list.sort(((o1, o2) -> {
return o1[0] == o2[0] ? o1[1] - o2[1] : o1[0] - o2[0];
}));
int find = 0,res = 0;
boolean f = false;
for (int i = 0; i < n;) {
int maxY = find;
if(list.get(i)[0] <= find){
System.out.println(-1);
return;
}
while (i < n && list.get(i)[0] <= find){int x = list.get(i)[0],y = list.get(i)[1];
maxY = Math.max(maxY,y);
if(maxY >= L){
f = true;
break;
}
i++;
}
find = maxY;
res++;
if(f)
break;
}
System.out.println(find >= L ? res : -1);
}
}