8-17小记

2023-05-16

Comparator比较器的使用

435. 无重叠区间 - 力扣(LeetCode) (leetcode-cn.com)

给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。

注意:

可以认为区间的终点总是大于它的起点。
区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。

示例 1:

输入: [ [1,2], [2,3], [3,4], [1,3] ]

输出: 1

解释: 移除 [1,3] 后,剩下的区间没有重叠。

示例 2:

输入: [ [1,2], [1,2], [1,2] ]

输出: 2

解释: 你需要移除两个 [1,2] 来使剩下的区间没有重叠。

示例 3:

输入: [ [1,2], [2,3] ]

输出: 0

解释: 你不需要移除任何区间,因为它们已经是无重叠的了。

🧠思路:

​ 1.我们只需要对每一段区间的右边界进行排序,从左向右遍历即可

​ 2.遍历时判断每一段区间的左边界是否小于当前记录的右边界,如果小于就记录交叉区间+1

​ 3.直到右边界与左边界没有交叉区间

​ 4.更新右边界继续判断

435.无重叠区间

  • 难点一:一看题就有感觉需要排序,但究竟怎么排序,按左边界排还是右边界排。
  • 难点二:排完序之后如何遍历,如果没有分析好遍历顺序,那么排序就没有意义了。
  • 难点三:直接求重复的区间是复杂的,转而求最大非重复区间个数。
  • 难点四:求最大非重复区间个数时,需要一个分割点来做标记。
class Solution {
    public int eraseOverlapIntervals(int[][] intervals) {
        if (intervals.length < 2) return 0;
        Arrays.sort(intervals, new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                return o1[1] - o2[1];
            }
        });

        int count = 0;
        int edge = intervals[0][1];
        for (int i = 1; i < intervals.length; i++) {
            if (intervals[i][0] < edge) {
                count++;
            } else {
                edge = intervals[i][1];
            }
        }
        return count;
    }
}

通过这道题学会了Comparator这样的一个比较器的使用

Arrays.sort(intervals, new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
            	//o1[1] - o2[1]>0就交换两个元素的位置,即升序排列
                return o1[1] - o2[1];
            }
        });

手测代码验证:

public class Test {
    public static void main(String[] args) {
        Integer[] nums = new Integer[]{1,4,0,2,5,4};

        Arrays.sort(nums,new Comparator<Integer>(){
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1 - o2;
            }
        });

        System.out.println(Arrays.toString(nums));
    }
}

索引小记

关于在一张表abc三个列和ab两个列上边建立索引,当where条件查询a时走哪个索引的问题

首先创建一张表

CREATE TABLE `test1`(
   `a` INT,
   `b` VARCHAR(100) NOT NULL,
   `c` VARCHAR(40) NOT NULL
);

然后建立索引

CREATE INDEX ind_abc ON test1 (a,b,c)
CREATE INDEX ind_ab ON test1 (a,b)

然后用explain查看走的哪个索引

EXPLAIN SELECT * FROM test1 WHERE a = 0;
idselect_typetablepartitionstypepossible_keyskeykey_lenrefrowsfilteredExtra
sql语句执行顺序根据此字段可以看到当前查询类型显示这一行数据是关于哪一个表查询该列显示的为分区表命中的分区情况。非分区表该字段为空(null)。表示访问类型显示可能应用在这张表中的索引,一个或多个 查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询实际使用。如果为NULL 则没有使用索引。表示索引中使用的字节数,可通过该列计算查询中使用索引的长度显示索引的哪一列被使用了,如果可能的话,是一个常量根据表统计信息及索引选用情况,大致估算出找到所需的记录所需要读取的行数它指返回结果的行占需要读到的行(rows列的值)的百分比额外信息
1SIMPLEtest1(null)refind_abcind_abc4const1100Using index

如果我们把ind_abc删除重新建立索引的话那么就会走Ind_ab索引

所以最后能得出结论:abc和ab哪个索引最先建立,就会走哪个索引

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

8-17小记 的相关文章

  • FreeBSD内存交换文件的设置与自动加载

    本文主要讲述FreeBSD操作系统下内存交换文件的作用及其自动加载过程 xff0c 主要从以下几个方面展开叙述 xff1a 交换文件的设置交换文件的自动加载 交换文件是虚拟内存机制的重要组成部分 xff0c 在物理内存不够用时可以临时将不常
  • GeoServer入门(二):WMTS图层瓦片切割与调用

    本章主要讲述如何GeoServer进行图层瓦片切割与缓冲 xff0c 发布标准的WMTS服务 xff0c 并介绍了REST格式的调用参数 主要包含以下内容 xff1a 图层切片与缓冲WMTS服务调用 在GeoServer入门 xff08 一
  • Cesium入门(五):加载WMTS瓦片地图服务

    本章介绍Cesium JS库的WebMapTileServiceImageryProvider类 xff0c 并以GeoServer为例演示了在CesiumViewer控件中添加瓦片图层的方法 主要包括以下内容 xff1a WebMapTi
  • 深入学习Tomcat----自己动手写服务器(附服务器源码)

    相信大多 Web 开发者对 Tomcat 是非常熟悉的 xff0c 众所周知 Tomcat 是一款非常好用的开源 Servlet 容器 xff0c 您一定对这个最流行的 Servlet 容器充满好奇 xff0c 虽然它并不像一个黑盒子那样让
  • Cesium入门(六):加载EPSG4326网格的瓦片地图

    本章介绍Cesium JS库的TilingScheme类 xff0c 并以GeoServer服务器为例演示了加载EPSG 4326网络的瓦片地图 主要包括以下内容 xff1a TilingScheme添加EPSG 4326瓦片图层 在Ces
  • Cesium入门(七):设置影像图层的覆盖范围

    本章介绍Cesium JS库的Rectangle类 xff0c 并以GeoServer服务器为例演示了在加载EPSG 4326网格的瓦片地图时 xff0c 通过设置rectangle参数来限定图层的覆盖范围 主要包括以下内容 xff1a R
  • Wget下载网页与镜像网站

    本文主要介绍GNU Wget实用程序及其在在FreeBSD操作系统下的安装过程 xff0c 并对几个最常用的下载功能进行了说明 xff0c 主要包括以下几个方面 xff1a GNU Wget概述Wget程序安装Wget常用功能 1 GNU
  • 使用cron定时执行任务

    本文主要介绍Unix系统中用于定时执行任务的cron守护程序和crontab配置表的文件格式 xff0c 并对自动执行脚本文件时的注意事项进行了说明 xff0c 主要包括以下几个方面 xff1a cron守护程序概述crontab配置表cr
  • 用Imagex备份&还原Windows7简明教程+本人编写的批处理+解说Imagex常用命令

    用Imagex备份 amp 还原Windows7简明教程 43 本人编写的批处理 43 解说Imagex常用命令 2012 03 26 23 32 53 分类 xff1a Windows 7 探索实 标签 xff1a 举报 字号 大 中 小
  • Android 硬件版本问题(M/Q/O/RM)

    M gt MTK Q gt 高通 O gt 海外 RM gt 国内 个人理解 xff1a 软件在编写的过程中 xff0c 为了适配不同的硬件 处理器 xff0c 要搞不同的内置版本
  • 学成在线笔记三:CMS管理页面开发

    注意 xff1a 我是用的element ui的版本位 xff1a 2 10 1 xff0c 若要使用本博客中的前端代码 xff0c 建议修改为相同版本 修改方式 xff1a 修改根目录下的package json中dependencies
  • vue3 和 vite3脚手架相关20个库

    学会这 20 个库 xff0c 让你快速看懂 vue3 和 vite3 源码 x1f680 前言 写一个开源的项目也不例外 xff0c 就拿在国内很火的 vue3 框架 和 vite 工具 来讲 xff0c 其中的实现与架构设计无不是一个
  • SQL高级优化

    知识回顾 1 git版本控制工具 xff0c 主要管理项目的代码文件 它相比CVS SVN它特点 xff0c 可支持分布式 外网 离线工作 主流代码管理工具 2 xff09 基本概念 工作空间 本地索引 本地仓库 远程仓库 就体积而言 xf
  • windows批处理:暂停的处理

    参考 xff1a https www cnblogs com yulinlewis p 10074565 html 总结 xff1a 1 ping n 1 127 1 127 1是127 0 0 1 xff0c 被称为本地回环地址 xff0
  • 如何减小与“大牛”的差距

    为什么同样的时间有的人可以漂亮的完成工作 xff0c 而有些人废了很大的力气也没有完成 xff1f 前者我们常常称之为 大牛 xff0c 后者我们常常叫他们 菜鸟 当然 大牛 都是相对而言的 xff0c 大牛 也不可能方方面面都非常厉害 x
  • Android Studio:模拟器启动后不停闪烁

    解决方法 xff1a graphics选择Software
  • java基于springboot+vue的企业员工人事工资薪酬管理系统 elementui

    系统主要分为管理员和普通用户和员工三部分 主要功能包括个人中心 普通用户管理 员工管理 人事档案管理 部门管理 薪酬管理 人事调动管理 职务管理 培训管理 招聘信息管理 求职简历管理 邀请面试管理 录用信息管理 员工应聘管理 系统管理等功能
  • Unity设置横竖屏

    Unity设置横竖屏 使用开发工具设置 xff08 工程统一设置 xff09 使用代码设置 xff08 可以分开设置不同场景 xff09 使用开发工具设置 xff08 工程统一设置 xff09 使用代码设置 xff08 可以分开设置不同场景
  • 网络错误 Unable to resolve host

    1 没有网络权限 2 没有网络 3 防火墙阻止
  • Android 项目中 Mopub 广告基础使用(插屏和横幅)

    1 下载 MoPub Android SDK repositories mavenCentral MoPub SDK is now available in Maven Central android compileOptions sour

随机推荐

  • Camera2打开相机,建立会话,并监听相机流(以拍照为例)

    Camera2打开相机 xff0c 建立会话 xff0c 并监听相机流 xff08 以拍照为例 xff09 获取 CameraManager通过 CameraManager openCamera 方法打开相机 xff0c 监听回调 xff0
  • 协程的创建

    GlobalScope launch 使用 xff08 代码会在当前线程所有内容执行完成之后再执行 xff09 新建线程 xff0c 执行 34 延时 1 秒 xff0c 打印当前线程名称 34 的代码 GlobalScope launch
  • Retrofit 使用

    Retrofit 使用 Retrofit 官网导入依赖库请求数据 xff08 以 玩Android 为例 xff0c 官方文档为 github 接口 xff1a https api github com xff09 数据请求前提getpos
  • Retrofit2 源码分析

    Retrofit2 源码分析 整体流程 xff08 以异步请求为例 xff09 源码分析总结 整体流程 xff08 以异步请求为例 xff09 通过建造者模式创建 Retrofit 对象Retrofit 对象通过 create 方法 xff
  • jar文件双击不能打开

    注册表 在Windows开始菜单的搜索框中输入 regedit xff0c 在上方搜索出的文件regedit上点击鼠标右键 xff0c 在弹出的菜单中选择 以管理员身份运行 在注册表编辑器中 xff0c 找到 HKEY CLASSES RO
  • 深入理解JS中的变量作用域

    在 JS 当中一个变量的作用域 xff08 scope xff09 是程序中定义这个变量的区域 变量分为两类 xff1a 全局 xff08 global xff09 的和局部的 其中全局变量的作用域是全局性的 xff0c 即在 JavaSc
  • SystemUI返回键手势和launcher上滑手势

    背景描述 最近修改bug和需求 xff0c 接触到系统手势这一块 xff0c 发现是一个薄弱点 xff0c 以前只是简单知道 xff0c 没有深入了解 手势这一块涉及的模块和流程比较多 xff0c 记录一下别人写的比较好的文章参考一下 初步
  • Android Studio 展开、折叠代码块快捷键

    展开 折叠代码块的方法 xff1a 折叠单个方法 xff1a 34 ctrl 34 43 34 34 展开单个方法 xff1a 34 ctrl 34 43 34 43 34 折叠全部方法 xff1a 34 ctrl 34 43 34 shi
  • Android Studio 重写父类方法的快捷键

    快速重写父类方法的快捷键 xff1a ctrl 43 o
  • 门面(外观)模式和代理模式区别

    本文只讲门面模式和代理模式的区别 今天用旅游吃饭来区分下门面模式和代理模式 门面模式是给用户提供一种服务 xff0c 就相当于我们的饭店 xff0c 可以给顾客提供美味的食物 代理模式是根据用户的需求 xff0c 提供解决该需求的方案 xf
  • 传输层TCP的流量控制和拥塞控制(图文详解)

    TCP的流量控制和拥塞控制 TCP流量控制流量控制中的死锁问题 x1f512 持续计时器 TCP的拥塞控制增加资源能解决拥塞吗 xff1f 拥塞往往会趋于恶化拥塞控制方法慢开始和拥塞避免慢开始拥塞避免 快重传和快恢复快重传快恢复 TCP流量
  • 数据链路层的子层MAC层(图文详解)

    数据链路层的子层MAC层 MAC层MAC层的硬件地址单站地址 xff0c 组地址 xff0c 广播地址全球管理与本地管理适配器检查MAC地址 MAC帧的格式 MAC层 MAC不是物理层 xff01 MAC不是物理层 xff01 MAC不是物
  • 补码一位乘法(Booth算法)和补码二位乘法详解

    文章目录 补码一位乘法补码二位乘法布斯算法的硬件实现 A D Booth提出了一种算法 xff1a 相乘二数用补码表示 xff0c 它们的符号位与数值为一起参与乘法运算的过程 xff0c 直接得出用补码表示的乘法结果 xff0c 且正数和负
  • 计算机原理中的字,位扩展,都给老子进来学,看不懂算我输!

    文章目录 涉及到的几个概念地址线与数据线 字扩展与位扩展 涉及到的几个概念 MDR xff1a 数据寄存器 xff0c 用来存入内存中读入 写出的信息 MAR xff1a 地址寄存器 xff0c 用来存放当前CPU访问的内存单元地址 地址线
  • 计算机组成原理中指令的四个工作周期

    文章目录 执行过程取指周期带有间址寻址的指令周期带有中断的指令周期 间指周期执行周期中断周期 执行过程 执行过程 xff1a 在取址周期后 xff0c 需要判断是否有间址周期 xff0c 如果没有就进入到了执行周期 xff0c 在执行周期过
  • Uncaught TypeError: $(...).modal is not a function

    项目场景 xff1a ssm框架配合bootstrap和AJAX xff0c 点击按钮弹出模态框 问题描述 xff1a Uncaught TypeError modal is not a function 原因分析 xff1a 没有引入bo
  • Lock锁及获取锁的四种方法

    为什么使用LOCK xff1f LOCK锁LOCK锁的上锁与解锁 为什么使用LOCK xff1f 传统的Synchronized锁有非常多的缺点 xff1a 锁的唤醒和阻塞代价较高 xff0c 线程的阻塞和唤醒 xff0c 操作系统需要在用
  • Chrome浏览器无法安装插件的解决办法

    国内不翻墙情况下 xff0c 无法正常登录谷歌账户 无法访问谷歌应用商店 xff0c 无法同步个人数据和安装使用各类插件 本文解决方法 xff1a 开发模式安装 步骤 xff1a 1 将xxx crx插件的扩展名改成 zip或者 rar并解
  • java8的ConcurrentHashMap为何放弃分段锁,为什么要使用CAS+Synchronized取代Segment+ReentrantLock

    原文地址 xff1a https cloud tencent com developer article 1509556 今天突然被一个同事问到java8为何放弃分段锁 xff0c 于是花了点时间针对这个问题进行了小小的总结 jdk1 7分
  • 8-17小记

    Comparator比较器的使用 435 无重叠区间 力扣 xff08 LeetCode xff09 leetcode cn com 给定一个区间的集合 xff0c 找到需要移除区间的最小数量 xff0c 使剩余区间互不重叠 注意 可以认为