int start=intervals[0][0]; int end=intervals[0][1]; for (inti=1; i < n; i++) { int left=intervals[i][0]; int right=intervals[i][1]; if(left<end){ returnfalse; }else{ end=right; } } returntrue; }
解法二:
1 2 3 4 5 6 7 8 9
publicbooleancanAttendMeetings(int[][] intervals) { Arrays.sort(intervals, (a, b) -> Integer.compare(a[0], b[0])); for (inti=0; i < intervals.length - 1; i++) { if (intervals[i][1] > intervals[i + 1][0]) { returnfalse; } } returntrue; }
publicintminMeetingRooms(int[][] intervals) { //minimum number of conference rooms //minimum groups of un-overlapping intervals Arrays.sort(intervals,(a,b)->(a[0]!=b[0] ? a[0]-b[0] : b[1]-a[1])); int n=intervals.length; PriorityQueue<Integer> pq=newPriorityQueue(); pq.add(intervals[0][1]); for (inti=1; i < n; i++) { int left=intervals[i][0]; int right=intervals[i][1]; if(left<pq.peek()){ pq.offer(right); }else{ int min=pq.poll(); pq.offer(right); } } return pq.size(); }
publicintmostBooked(int n, int[][] meetings) { int[] counts=newint[n]; Arrays.sort(meetings,(a,b)->(a[0]-b[0])); //room number, meeting end time PriorityQueue<long[]> pq=newPriorityQueue<>((a,b)->(a[1]!=b[1] ? (int)(a[1]-b[1]) : (int)(a[0]-b[0]))); pq.offer(newlong[]{0,meetings[0][1]}); counts[0]++; for (inti=1; i < meetings.length; i++) { int start=meetings[i][0]; int end=meetings[i][1]; List<long[]> rooms=newArrayList<>(); int count=pq.size(); long[] room=null; //best room to offer while(!pq.isEmpty() && pq.peek()[1]<=start){//possible rooms to choose from long[] first=pq.poll(); if(room==null || first[0]<room[0]){ room=first; } rooms.add(first); } if(room!=null){ //no need to open a new room or wait room[1]=end; counts[(int)room[0]]++; for (long[] r : rooms) { pq.offer(r); } }elseif(count<n){// still have empty rooms, no need to wait counts[count]++; pq.offer(newlong[]{count,end}); }else{ //have to wait room=pq.poll(); counts[(int)room[0]]++; room[1]+=end-start; pq.offer(room); } } int res=0; int max=counts[0]; for (inti=1; i < counts.length; i++) { if(counts[i]>max){ res=i; max=counts[i]; } } return res; }