给定二维数组 [[3,7],[2,10],[3,4],[6,12],[13,19]],每个元素代表某一个飞机的降落与起飞时间,如题,求机场最大停靠的飞机数量
1
xjtroddy 2020-06-09 17:05:44 +08:00
感觉很难啊,不会,插眼等大神
|
2
yaoliyc 2020-06-09 17:07:50 +08:00 via iPhone
没看懂
|
3
jangit 2020-06-09 17:13:23 +08:00 via iPhone
就弄个大小为 16 的数组,memset 为 0, [3,7] 的话就把数组 0-4 加个一,以此类推,最后找最大的那个数
大 guy 是这样的吧 |
4
whileFalse 2020-06-09 17:14:39 +08:00
不在乎性能的话不是随便写。
l = [[3,7],[2,10],[3,4],[6,12],[13,19]] l = sorted([(i[0], 1) for i in l] + [(i[1], -1) for i in l]) current, max_value = 0, 0 for i in l: current += i[1] max_value = max(max_value, current) print(max_value) |
5
imn1 2020-06-09 17:17:26 +08:00
10+外服,上海一号服转发,可用端口 10000+,但超过 5000 并发会崩,所以是 5000,🐶
我想问,跟虹桥啥关系? 只考虑起落时间么?停机坪无限大?客流、架次、时段忽略?异常不考虑么? |
6
eke 2020-06-09 17:21:33 +08:00 via Android
排序扫一遍
|
8
nevin47 2020-06-09 17:25:34 +08:00
用 hash 或者平衡树来保存每个时刻的情况,方便动态增减
然后扫一次填表 再扫一次树或者表求解 |
9
imn1 2020-06-09 17:25:46 +08:00
哦,看懂了,原来是时间点,不是时长……
求哪个时间点停留最多飞机的数量 |
10
wshcdr 2020-06-09 23:02:28 +08:00
package com.company;
import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Stream; public class stream001 { public static long max = 0; public static void main(String[] args) { List<Integer> list1 = new ArrayList<Integer>() { { add(1); add(2); add(3); add(4); add(5); } }; List<Span> listSpan = new ArrayList<Span>() { { add(new Span(3,7)); add(new Span(4, 8)); add(new Span(10, 12)); } }; list1.forEach(item2->{ long l2 = listSpan.stream().filter(span -> item2 >= span.start && item2 <= span.end) .count(); if(stream001.max < l2) stream001.max = l2; }); System.out.println(stream001.max); } } |