美文网首页
高频 凳子上坐人

高频 凳子上坐人

作者: 浮安樊 | 来源:发表于2018-06-10 04:06 被阅读0次

在一排座位中,找到与两边人距离的最远的位置

class Solution {
    public int findSeat(int[] people) {
        if (people == null || people.length == 0) {
            return -1;
        }

        int idx = -1;
        int maxLen = Integer.MIN_VALUE;
        int cnt = 0;
        for (int i = 0; i < people.length; i++) {
            if (people[i] == 0) {
                cnt++;
            } else {
                if (cnt > maxLen) {
                    maxLen = cnt;
                    idx = i - cnt;
                }
                cnt = 0;
            }
        }

        if (idx == -1) {
            return -1;
        }
        return idx + maxLen / 2;
    }
}

Follow-up:
凳子上一开始没有人,然后一个一个往里面放,每次放的时候O(1)时间求放在哪里距离最大(数学问题 )

search O(1)

Use priority queue (maxHeap)

class Solution {
    public int[] findSeat(int numOfPeople, int seats) {
        if (seats == 0) {
            return -1;
        }

        Comparator<int[]> comp = new ComparatorMax();
        PriorityQueue<int[]> q = new PriorityQueue<>(2 * seats, comp);
        int[] rst = new int[seats];

        q.offer(new int[] {0, seats});

        for (int i = 0; i < numOfPeople; i++) {
            int[] l = q.poll();
            int idx = l[0] + l[1] / 2;
            rst[idx] = i;
            q.offer(new int[] {l[0], l[1] / 2});
            q.offer(new int[] {idx + 1, l[1] - l[1]/ 2 - 1});
        }
    }

    return rst;
}

class ComparatorMax implements Comparator<Integer> {
    @Override
    public int compare(int[] a, int[] b) {
        if (a[1] > b[1]) {
            return -1;
        }

        if (a[1] < b[1]) {
            return 1;
        }

        if (a[0] < b[0]) {
            return -1;
        } else if (a[0] > b[0]) {
            return 1;
        }

        return 0;
    }
}

相关文章

  • 高频 凳子上坐人

    在一排座位中,找到与两边人距离的最远的位置 Follow-up:凳子上一开始没有人,然后一个一个往里面放,每次放的...

  • 人凳子

    人生匆匆到暮年,体衰常使身欠安, 前行多凭三条腿,休息难离四脚仙。 今日甘为娘作椅,明朝必有子孙贤, 一张美图传佳...

  • 你养我小,我真的能养你老吗?

    周末,带着孩子在商场几圈。走累了,坐在商场里的凳子上坐着休息。有个妇女牵着一个老年人过来,坐在我旁边。...

  • 2018-06-17

    去你楼下呆着,去你凳子上坐着,去你床上躺着,去你车里坐着,去你自个儿世界一个人待着吧

  • 2017-10-17

    角色:一个囚人a 主人公w 小角色 1/2 导演n 演员y w被推进监狱 牢房里 有个长凳子凳子上坐着a w打招呼...

  • 女人不要爱的那么卑微

    “看那边树下凳子上坐着的那对夫妻。” “怎么了?” “你别那么刻意去看好不好。会让人很尴尬的。” “到底怎么了吗?...

  • 快乐,也可以很简单!

    水上一贴,昨天晚上坐凳子上玩了会电脑给我屁股硌的生疼,就这个凳子 但是贵在便宜实用,是租房的不二之选,几个垒起来还...

  • 家庭聚会,酒杯里端着孝顺,凳子上坐着现实。

    不花钱的孝顺是孝顺么? 郑老太太85岁生日,全家人齐聚一堂热闹异常。 吃饭的地点选的也是大酒店一个大包间里,两张桌...

  • 晚饭后

    已是中伏,天气依然闷热,饭后和先生一起下楼在凳子上坐着乘凉,先生点烟我就去他旁边的凳子了,我们两个人在两个长凳...

  • 牛肉兜汤

    沿街的小巷口,摆着几张桌子,大红色的塑料凳子上坐满了着急上班的人。 他们找了个位置,两人混在人群中低着头,各自面前...

网友评论

      本文标题:高频 凳子上坐人

      本文链接:https://www.haomeiwen.com/subject/mnzxeftx.html