LeetCode 회의실 II
회의 시간 을 정 한 배열 은 모든 회의 시간 에 시작 과 끝 시간 [s1, e1], [s2, e2],...] (si < ei) 을 포함 하고 회의 충돌 을 피하 기 위해 회의실 자원 을 충분히 이용 하 는 것 을 고려 해 야 합 니 다. 적어도 몇 개의 회의실 이 필요 한 지 계산 해 보 세 요.
예시 1:
: [[0, 30],[5, 10],[15, 20]]
: 2
예시 2:
: [[7,10],[2,4]]
: 1
이 문 제 는 상하 차 문제 와 약간 유사 하 다.이 문 제 는 시간 충돌 에 대한 해결 방안 을 기획 한 것 이다.제목 에 따 르 면 우 리 는 이 회의 가 지속 되 는 시간 에 신경 쓸 필요 가 없다 는 것 을 알 게 되 었 다.회의 시간 이 정 해 져 있 기 때문에 회의실 과 회의 종료 시간 만 주시 하면 된다.회의 시간 이 끝나 야 다음 회 의 를 진행 할 수 있 기 때문이다.그렇지 않 으 면 새로운 회의실 을 열 어 회 의 를 진행 해 야 한다.회의 비용 과 시간 효율 을 최 우선 으로 하기 위해 다음 회의 가 들 어 오 는 방 은 회의실 종료 시간 과 이 회의 시작 시간의 차이 에 따라 시간 차 가 적 을 수록 회의 가 빈 틈 없 이 연결 되 기 때문에 효율 이 높다.
class Solution {
public int minMeetingRooms(int[][] intervals) {
if(intervals == null || intervals.length ==0)
return 0;
// , ( )
Arrays.sort(intervals,new Comparator<>(){
@Override
public int compare(int[] o1, int[] o2) {
return o1[0]-o2[0];
}
});
// HashMap
Map<Integer,Integer> RoomTime = new HashMap<>();
// , ,
RoomTime.put(1,intervals[0][1]);
// , forEach ,
boolean isFirst = false;
for(int[] item :intervals){
if(!isFirst)
{
// ,
isFirst = !isFirst;
continue;
}
//
int fix = 0;
// ,
int tempRoom = 0;
//
for(Map.Entry<Integer,Integer> entry: RoomTime.entrySet()){
//
if(entry.getValue() <= item[0])
{
//
if(fix == 0 || item[0] - entry.getValue() <= fix)
{
fix = item[0] - entry.getValue();
tempRoom = entry.getKey();
}
}
}
// 0, 。 , , ,
if(tempRoom != 0)
RoomTime.put(tempRoom, item[1]);
else
RoomTime.put(RoomTime.size() + 1,item[1]);
}
// ,
return RoomTime.size();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Codility Lesson3】FrogJmpA small frog wants to get to the other side of the road. The frog is currently located at position X and wants to get to...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.