首页 > 其他分享 >100311. 无需开会的工作日

100311. 无需开会的工作日

时间:2024-06-02 12:11:01浏览次数:28  
标签:无需 int res meetings days currentInterval 开会 100311 merged

100311. 无需开会的工作日   已解答 中等  

给你一个正整数 days,表示员工可工作的总天数(从第 1 天开始)。另给你一个二维数组 meetings,长度为 n,其中 meetings[i] = [start_i, end_i] 表示第 i 次会议的开始和结束天数(包含首尾)。

返回员工可工作且没有安排会议的天数。

注意:会议时间可能会有重叠。

 

示例 1:

输入:days = 10, meetings = [[5,7],[1,3],[9,10]]

输出:2

解释:

第 4 天和第 8 天没有安排会议。

示例 2:

输入:days = 5, meetings = [[2,4],[1,3]]

输出:1

解释:

第 5 天没有安排会议。

示例 3:

输入:days = 6, meetings = [[1,6]]

输出:0

解释:

所有工作日都安排了会议。

 

提示:

  • 1 <= days <= 109
  • 1 <= meetings.length <= 105
  • meetings[i].length == 2
  • 1 <= meetings[i][0] <= meetings[i][1] <= days

 

1. 暴力遍历法

/*    public int countDays(int days, int[][] meetings) {
        int[] buzy = new int[days+1];
        int count = 0;
        for(int[] meeting : meetings) {
            for(int i = meeting[0]; i <= meeting[1]; i++) {
                buzy[i] = buzy[i] + 1;
            }
        }
        for(int i = 1; i <= days; i++) {
            if(buzy[i]==0){
                count++;
            }
        }
        return count;
    }*/

 

 

2. 合并区间问题

public static int countDays(int days, int[][] meetings) {
        int count = 0;
        Arrays.sort(meetings, new Comparator<int[]>() {
            public int compare(int[] a, int[] b) {
                return a[0] - b[0];
            }
        });
        List<int[]> merged = new ArrayList<>();
        int[] currentInterval = meetings[0];
        merged.add(currentInterval);

        for (int[] nextInterval : meetings) {
            // 如果当前区间的结束时间大于下一个区间的开始时间,则合并它们
            if (currentInterval[1] >= nextInterval[0]) {
                currentInterval[1] = Math.max(currentInterval[1], nextInterval[1]);
            } else {
                // 否则,当前区间已经结束,开始一个新的区间
                currentInterval = nextInterval;
                merged.add(currentInterval);
            }
        }
        int[][] res = merged.toArray(new int[merged.size()][]);
        count=Math.abs(res[0][0]-1)+Math.abs(days-res[res.length-1][1]);
        for(int i = 1; i < res.length; i++) {
           count+=Math.abs(res[i][0]-res[i-1][1]-1);
        }
        return count;
    }

 

 

标签:无需,int,res,meetings,days,currentInterval,开会,100311,merged
From: https://www.cnblogs.com/ak918xp/p/18226957

相关文章

  • 柬埔寨语翻译通App上架啦!支持高棉语翻译成中文,中柬互译,高棉语OCR文字识别提取,提高工作
    大家好!有个超级棒的消息要告诉大家——柬埔寨语翻译通小程序已经上架啦!不论你是安卓还是苹果用户,都可以轻松下载使用!只要微信搜一搜,翻译之路畅通无阻!这不仅仅是一个翻译工具,它还支持高棉语中文双语翻译,翻译结果支持语音朗读,翻译记录自动保存!跟着说跟着读,高棉语词汇轻松掌握......
  • AI视频换脸!最快的方法,100%成功,完全免费,无需配置、打开即用
    这是一个全新的AI视频换脸工具,它是完全免费的,使用起来非常简单和好用。这款工具的效果出色,可以支持CPU和GPU解码。也就是说,即使你的电脑没有独立的显卡,你也可以通过CPU进行解码。我之前介绍过一些其他的AI视频工具,比如AIC音克隆,AI绘画,AI视频一键趣码等等,这些工具的效果也......
  • [JarEditor]一款无需解压直接编辑修改jar内容的IDEA插件
    前言IDEA自带的反编译插件能打开jar反编译class,遗憾的是不能编辑class,有的时候我们需要修改jar的时候还需要解压,反编译class,然后新建.java,修改代码,再编译,最后打包jar。我敢说中间的过程你肯定不是一气呵成的,如果jar有依赖还要花时间去排查,打包的时候还需要注意编译jdk的版本,有的......
  • 29.4K star! 仅需几行代码快速构建机器学习 Web 应用项目,无需前端技能!
    大家好,我是狂师!今天给大家推荐一款开源的Python库:Gradio!Gradio是一个开源的Python库,用于创建机器学习和数据科学的交互式应用和演示。项目地址:https://github.com/gradio-app/gradio1、项目介绍Gradio旨在简化展示和测试机器学习模型的过程,它允许用户通过构建漂亮的界面来......
  • 如何全程使用docker部署jeecg平台,无需安装开发环境(主要是如何使用Docker来进行Maven打
    在部署jeecg平台时,文档中即使通过docker部署,也需要安装开发环境编译一部分内容,本文记录使用docker替代安装环境的过程。使用docker的目的是在平台选型的过程中,不希望麻烦的安装环境,同时如果选型不满意,无需卸载环境就能恢复一个干净的系统。部署环境:UbuntuServer20.04docker,......
  • 无需重新学习,使用 Kibana 查询/可视化 SLS 数据
    1.场景现在通过SLS的ES兼容能力,可以很方便地实现用Kibana来查询和可视化SLS的数据。对于从ES迁移到SLS的用户可以继续保留原来的Kibana使用习惯。下面来演示如何通过Kibana来访问SLS。2.使用方法部署架构这里蓝色部分是需要客户端部署的组件。Kibana就......
  • ssh的空闲超时断开会话方法及反空闲(保持连接)方法
    两种方式:1.设置TMOUT,在用户家目录下设置只针对本用户,在/etc/profile里设置针对全部这个是针对所有tty的,所以本地和ssh超时都会退出注意:大多数的shell客户端工具,如putty,windterm,mobaxterm等里面的保持会话功能,只发送空包,是无法针对TMOUT起作用的tmout命令只对交互式s......
  • PDF加密转APK大师 (支持一机一码, 无需额外安装PDF浏览器, 强力加密保护PDF文件)
    PDF加密转APK大师是一款PDF加密软件,它可以把PDF文件直接转成安卓APP,并支持一机一码加密,静态密码加密等高级功能,可以用来保护PDF文档,防止未经授权的传播,并方便向用户收费.加密生成的APK被高强度加密混淆,并且PDF文件也使用了128位加密保护,可以有效保护PDF文件. ......
  • 无需手动操作:利用 Playwright 自动上传文件
    前言Playwright是一个由Microsoft开发的自动化测试工具,它提供了跨浏览器的自动化测试能力,包括Chrome、Firefox和Safari。除了测试之外,Playwright还可以用于执行浏览器操作,例如模拟用户行为来实现文件上传功能。在本文中,我们将使用Playwright和Python实现自动上传文件......
  • inno Setup 打包Java exe可执行文件和MySQL数据库,无需额外配置实现一键傻瓜式安装
    前言出现有需要打包Java应用和Mysql数据库成一个安装包给出去的需求,这里我把整个打包的流程整理一下。环境JDK17;MySQL5.7;流程Jpackage打包EXEJpackage是JDK14后加入的一个用于独立打包的工具,能够将应用打包成exe,有了Jpackage就不需要用exe4j这种打包工具,省去打包的繁......