1353. 最多可以参加的会议数目

1.题目

在这里插入图片描述在这里插入图片描述

2.解法

1、先按照startDay进行排序,得到开始时间从早到晚的数组排列。
2、接着将startDay相等的会议加入优先队列,弹出结束时间最早的会议。相同时间,结束时间最早的会议优先出列。

class Solution {
    public int maxEvents(int[][] events) {
        // 按照开始时间对元素排序
        Arrays.sort(events, new Comparator<int[]>(){
            @Override
            public int compare(int[] a, int[] b) {
                return a[0] - b[0];
            }
        });

        PriorityQueue<Integer> queue = new PriorityQueue<>();
        int day = 0, id = 0, n = events.length, res = 0;

        while (id < n || !queue.isEmpty()) {
            if (queue.isEmpty()) {
                // day是由第一个值决定的
                queue.add(events[id][1]);
                day = events[id++][0];
            }
            // 将dayday中否合要求的值添加进去
            while (id < n && events[id][0] <= day) {
                queue.add(events[id++][1]);
            }

            // 否合要求,day和res都会++,既然最大值都大于等于day,那么第一个元素就可以poll
            // day++,是因为一天只能参加1场会议
            if (queue.peek() >= day) {
                day++;
                res++;
                
            }
            // 不符合要求的元素要poll出去,要不循环结束不了
            queue.poll();
        }
        return res;
    }
}

每次一个结束时间仅进出堆一次,加上堆排序的时间和维护堆的时间,时间复杂度为O(nlogn),空间复杂度为O(n)
优先队列由堆来实现。

好的,我来为您介绍一下用vant实现表单校验的方法。 首先,您需要使用vant组件库中的`Field`组件作为表单输入框,并在其上添加`rules`属性以实现校验功能。下面是一个示例代码: ```html <template> <van-field v-model="value" label="输入框" placeholder="请输入内容" :rules="rules" /> </template> <script> export default { data() { return { value: '', rules: [ { validator: (rule, value) => { if (!value) { return '请输入内容'; } else if (value > 100) { return '最大不能超过100'; } else if (!/^\d+(\.\d{1})?$/.test(value)) { return '最多保留小数点一位'; } else { return true; } } } ] }; } }; </script> ``` 在这段代码中,我们定义了一个`value`变量来存储输入框中的值,同时定义了一个`rules`数组来存储校验规则。在`rules`数组中,我们使用了`validator`函数来实现校验逻辑。如果校验通过,`validator`函数应该返回`true`;如果校验失败,`validator`函数应该返回一个字符串,其中包含校验失败的原因。 在上述示例代码中,我们定义了三个校验规则: 1. 如果输入框的值为空,提示用户“请输入内容”; 2. 如果输入框的值大于100,提示用户“最大不能超过100”; 3. 如果输入框的值不符合“最多保留小数点一位”的要求,提示用户“最多保留小数点一位”。 您可以根据自己的需求修改这些校验规则,以适应不同的场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值