56合并区间 go解题

这里解法是直接找一个快排模板,然后排序了第一个数,所以需要多加一个判断逻辑并且稍微覆盖。

package mainimport "fmt"func main() {fmt.Println(merge([][]int{{0, 2}, {2, 3}, {4, 4}, {0, 1}, {5, 7}, {4, 5}, {0, 0}}))// fmt.Println(merge([][]int{{2, 3}, {4, 5}, {6, 7}, {8, 9}, {1, 10}}))// fmt.Println(merge([][]int{{1, 4}, {1, 5}, {0, 0}}))
}func merge(intervals [][]int) [][]int {if len(intervals) == 0 {return intervals}quickSort(intervals, 0, len(intervals)-1)res := make([][]int, 0)res = append(res, intervals[0])tmpmax := 0 // 可能有包含关系for i := 1; i < len(intervals); i++ {//快排时没有处理第二位数字,会有1,5;1,4这种错误交换if intervals[i][0] == intervals[i-1][0] {tmpmax = max(intervals[i][1], intervals[i-1][1])// 并且暴力地把他们都用最大数覆盖了intervals[i][1], intervals[i-1][1] = tmpmax, tmpmaxres[len(res)-1][1] = max(res[len(res)-1][1], tmpmax)continue}if intervals[i][0] <= intervals[i-1][1] || res[len(res)-1][1] >= intervals[i][1] || res[len(res)-1][1] >= intervals[i][0] {// 已经加入res的可能对后面独立区间有包含关系tmpmax = max(intervals[i][1], intervals[i-1][1])res[len(res)-1][1] = max(res[len(res)-1][1], tmpmax)} else {res = append(res, intervals[i])}}return res
}func quickSort(nums [][]int, l, r int) { //[l,r]if l < r {m := partition(nums, l, r)quickSort(nums, l, m-1)quickSort(nums, m+1, r)}
}func partition(nums [][]int, l int, r int) int {key := nums[r][0]i := lj := lfor j < r {if nums[j][0] < key {nums[i][0], nums[j][0] = nums[j][0], nums[i][0]nums[i][1], nums[j][1] = nums[j][1], nums[i][1]i++}j++}nums[i][0], nums[r][0] = nums[r][0], nums[i][0]nums[i][1], nums[r][1] = nums[r][1], nums[i][1]return i
}

假如把第二个数一起排序了:

package mainimport "fmt"func main() {// fmt.Println(merge([][]int{{0, 2}, {2, 3}, {4, 4}, {0, 1}, {5, 7}, {4, 5}, {0, 0}}))// fmt.Println(merge([][]int{{2, 3}, {4, 5}, {6, 7}, {8, 9}, {1, 10}}))fmt.Println(merge([][]int{{1, 10}, {2, 3}, {4, 5}}))
}func merge(intervals [][]int) [][]int {if len(intervals) == 0 {return intervals}quickSort(intervals, 0, len(intervals)-1)res := make([][]int, 0)res = append(res, intervals[0])tmpmax := 0 // 可能有包含关系for i := 1; i < len(intervals); i++ {// 如果上一个区间完全包含于res,最后一个res的可能对后面的“看似独立区间”有包含关系// {1,10},{2,3},{4,5} // {1,10},{2,3},{4,15}if intervals[i][0] <= intervals[i-1][1] || res[len(res)-1][1] >= intervals[i][1] || res[len(res)-1][1] >= intervals[i][0] {tmpmax = max(intervals[i][1], intervals[i-1][1])res[len(res)-1][1] = max(res[len(res)-1][1], tmpmax)} else {res = append(res, intervals[i])}}return res
}func quickSort(nums [][]int, l, r int) { //[l,r]if l < r {m := partition(nums, l, r)quickSort(nums, l, m-1)quickSort(nums, m+1, r)}
}func partition(nums [][]int, l int, r int) int {key := nums[r][0]i := lj := lfor j < r {// 第一个数相同时,第二数也要小才是真的小if (nums[j][0] < key) || (nums[j][0] == key && nums[j][1] < nums[r][1]) {nums[i][0], nums[j][0] = nums[j][0], nums[i][0]nums[i][1], nums[j][1] = nums[j][1], nums[i][1]i++}j++}nums[i][0], nums[r][0] = nums[r][0], nums[i][0]nums[i][1], nums[r][1] = nums[r][1], nums[i][1]return i
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/59300.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

贝叶斯+PINN!双重热点buff叠加,轻松斩获Nature子刊!

PINN一直以来都是顶会顶刊上的大热方向&#xff0c;相关研究量多且质量高。最近&#xff0c;有关“贝叶斯PINN”的研究取得了不少突破&#xff0c;多项成果被Neurips、Nature子刊等录用。 事实上&#xff0c;这个结合方向的研究热度正逐渐上升&#xff0c;因为其在提高泛化能力…

【rust】rust基础代码案例

文章目录 HelloWorld斐波那契数列计算表达式&#xff08;加减乘除&#xff09; HelloWorld fn main() {print!("Hello,Wolrd") }斐波那契数列 fn fib(n: u64) -> u64 {let mut a 0;let mut b 1;for _ in 0..n {let c a b;a b;b c;}a }fn main() {let n 1…

Python模拟真人动态生成鼠标滑动路径

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序&#xff0c;它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言&#xff0c;原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势&#xff1a; 模拟…

从网络到缓存:在Android中高效管理图片加载

文章目录 在Android应用中实现图片缓存和下载项目结构使用 代码解析关键功能解析1. 图片加载方法2. 下载图片3. 保存图片到缓存4. 文件名提取 或者通过学习glide 首先我们需要在配置AndroidManifest.xml里面添加 <uses-permission android:name"android.permission.IN…

react-router与react-router-dom的区别

写法上的区别&#xff1a; 写法1: import {Swtich, Route, Router, HashHistory, Link} from react-router-dom;写法2: import {Switch, Route, Router} from react-router; import {HashHistory, Link} from react-router-dom;react-router实现了路由的核心功能 react-router-…

如何在C下比较两个字符串是否相同?

strcmp函数 strcmp函数是C标准库中用于比较两个字符串的函数。它的原型定义在string.h头文件中 函数原型&#xff1a; int strcmp(const char *str1, const char *str2); str1 和 str2 是两个要比较的字符串。返回值为整数类型&#xff1a; 如果返回值为0&#xff0c;表示两…

为数据集而生的 SQL 控制台

随着数据集的使用量急剧增加&#xff0c;Hugging Face 社区已经变成了众多数据集默认存放的仓库。每月&#xff0c;海量数据集被上传到社区&#xff0c;这些数据集亟需有效的查询、过滤和发现。 Dataset Monthly Creations 每个月在 Hugging Face Hub 创建的数据集 我们现在非常…

modelscope下载Qwen2.5 72B 模型方法

conda create -n modelscope python=3.10 conda activate modelscopepip install modelscope执行这个python代码: from modelscope.hub.snapshot_download import snapshot_download# 下载模型到当前路径 model_dir = snapshot_download(

【Git】如何在 Git 中高效合并分支:完整指南

目录 引言1. 切换到主分支1.1 切换分支命令1.2 相关命令1.3 切换分支示意图 2. 合并分支2.1 基本合并命令2.2 合并选项2.3 合并流程示意图 3. 解决冲突3.1 解决冲突的步骤3.2 相关命令3.3 解决冲突示意图 4. 本地更新分支4.1 拉取远程更改4.2 更新主分支4.3 拉取远程更新到本地…

2024年计算机视觉与图像处理国际学术会议 (CVIP 2024)

目录 大会简介 主办单位&#xff0c;协办单位 组委会 主讲嘉宾 征稿主题 参会方式 会议议程 重要信息 会议官网&#xff1a;iccvip.org 大会时间&#xff1a;2024年11月15日-17日 大会地点&#xff1a;中国 杭州 大会简介 2024年计算机视觉与图像处理国际学术会议(C…

【D3.js in Action 3 精译_039】4.3 D3 面积图的绘制方法及其边界标签的添加

当前内容所在位置&#xff1a; 第四章 直线、曲线与弧线的绘制 ✔️ 4.1 坐标轴的创建&#xff08;上篇&#xff09; 4.1.1 D3 中的边距约定&#xff08;中篇&#xff09;4.1.2 坐标轴的生成&#xff08;中篇&#xff09; 4.1.2.1 比例尺的声明&#xff08;中篇&#xff09;4.1…

使用 PyCharm 构建 FastAPI 项目:零基础入门 Web API 开发

使用 PyCharm 构建 FastAPI 项目&#xff1a;零基础入门 Web API 开发 本文提供了一份完整的 FastAPI 入门指南&#xff0c;涵盖从环境搭建、依赖安装到创建并运行一个简单的 FastAPI 应用的各个步骤。通过 FastAPI 和 Uvicorn&#xff0c;开发者可以快速构建现代化的 Web API…

通过AI进行大数据分析,提示广告投放效果,优衣库的AI实践

大家好&#xff0c;我是Shelly&#xff0c;一个专注于输出AI工具和科技前沿内容的AI应用教练&#xff0c;体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具&#xff0c;拥抱AI时代的到来。 AI工具集1&#xff1a;大厂AI工具【共23款…

Python小白学习教程从入门到入坑------第二十四课 继承(语法进阶)

一、继承 继承就是让类和类之间转变为父子关系&#xff0c;子类默认继承父类的属性和方法 在Python中&#xff0c;继承是一个非常强大的特性&#xff0c;它允许我们创建一个新的类&#xff08;称为子类&#xff09;&#xff0c;这个新类可以继承另一个类&#xff08;称为父类…

【django】RESTful API 设计指南

目录 一、协议 二、域名 三、版本&#xff08;Versioning&#xff09; 四、路径&#xff08;Endpoint&#xff09; 五、HTTP动词 5.1 CRUD操作&#xff1a; 5.2 其他动词&#xff1a; 六、过滤信息&#xff08;Filtering&#xff09; 七、状态码&#xff08;Status Co…

【综合算法学习】(第十六篇)

目录 岛屿的最⼤⾯积&#xff08;medium&#xff09; 题目解析 讲解算法原理 编写代码 被围绕的区域&#xff08;medium&#xff09; 题目解析 讲解算法原理 编写代码 岛屿的最⼤⾯积&#xff08;medium&#xff09; 题目解析 1.题目链接&#xff1a;. - 力扣&#xf…

django的一些文件

~~~settings.py~~~ # 接口文档相关配置 REST_FRAMEWORK{ DEFAULT_SCHEMA_CLASS: rest_framework.schemas.coreapi.AutoSchema, } ~~~urls.py~~~ from rest_framework.documentation import include_docs_urls # 模块coreapi,只针对drf的接口文档 path(api-docs/, i…

qt QTabWidget详解

1、概述 QTabWidget是Qt框架中的一个控件&#xff0c;它提供了一个标签页式的界面&#xff0c;允许用户在不同的页面&#xff08;或称为标签&#xff09;之间切换。每个页面都可以包含不同的内容&#xff0c;如文本、图像、按钮或其他小部件。QTabWidget非常适合用于创建具有多…

用ChatGPT提升工作效率:从理论到实际应用

伴人工智能技术的迅速演进&#xff0c;像ChatGPT这类语言模型已成为提升工作效率的关键工具。这类模型不仅具备处理海量数据的能力&#xff0c;还能自动化许多日常任务&#xff0c;从而提高决策的准确性。本文将深入探讨如何在工作中利用ChatGPT等AI工具提升效率&#xff0c;涵…