为什么在下面的测试案例中此代码3的输出?

问题描述 投票:0回答:1

我的编码问题与计算预定时间表的最小房间数有关

给定一个由开始和结束时间[[s1,e1],[s2,e2],...]组成的会议时间间隔数组(si

这是我正在尝试解决的测试用例:[(65,424),(351,507),(314,807),(387,722),(19,797),(259,722),(165,221)]]

输出应该为6,但是我的代码返回3,但我不确定为什么。

[当我运行此测试用例时,[(65,424),(351,507),(314,807),(387,722),(19,797),(259,722)],我的解决方案会打印6,但是我加(165,221) ,解决方案将打印3。

``代码如下:

/**
 *Definition of Interval:
 * public classs Interval {
 *     int start, end;
 *     Interval(int start, int end) {
 *         this.start = start;
 *         this.end = end;
 *     }
 * }
 */

public class Solution {
    /**
     * @param intervals: an array of meeting time intervals
     * @return: the minimum number of conference rooms required
     */

public int minMeetingRooms(List<Interval> intervals) {
        // Write your code here
        if(intervals.size() == 0 || intervals == null) {
            return 0;
        }

        Interval[] interArr = new Interval[intervals.size()];
        interArr = intervals.toArray(interArr);
        Arrays.sort(interArr, (a,b) -> a.start - b.start);
        PriorityQueue<Integer> pq = new PriorityQueue<>();
        pq.add(interArr[0].end);
        for(int i = 1; i < interArr.length; i++) {
            Interval curr = interArr[i];
            if (curr.start < pq.peek()) {
                pq.add(interArr[i].end);
            }
        }
        return pq.size();
    }
}

``

java sorting priority-queue
1个回答
0
投票

我经常以此为面试问题。

简单地说,您的输出不正确因为您的算法不正确。您基本上已经编写了一个测试案例,证明demonstrates您的算法不正确。

提示,您不需要优先级队列。这个问题比您想象的要简单。

© www.soinside.com 2019 - 2024. All rights reserved.