代码随想录算法训练营|day36

第八章 贪心算法

  • 435.无重叠区间
  • 763.划分字母区间
  • 56.合并区间
  • 代码随想录文章详解
  • 总结

435.无重叠区间

对右边界升序排序,类似用最少数箭射爆气球,遍历区间,若当前区间与前一个区间不重合,更新区间边界end为当前区间右边界,并记录不重合区间个数,最终结果:区间总数-不重区间数

func eraseOverlapIntervals(intervals [][]int) int {sort.Slice(intervals, func(i, j int) bool {return intervals[i][1] < intervals[j][1]})res := 1end := intervals[0][1]for i := 1; i < len(intervals); i++ {//不重合更新右边界,并记录不重合个数if end <= intervals[i][0] {end = intervals[i][1]res++}}return len(intervals) - res
}

763.划分字母区间

记录数组中字符出现的最远位置。遍历字符串,若当前位置为最远距离,加入结果集

func partitionLabels(s string) []int {res := []int{}marks := []int{}left, right := 0, 0for i := 0; i < len(s); i++ {// 统计数组中字符出现的最远位置[同字符随遍历过程最远距离更新]marks[s[i]-'a'] = i}for i := 0; i < len(s); i++ {right = max(marks[s[i]-'a'], right)if i == right {res = append(res, right-left+1)left = i + 1}}return res
}

56.合并区间

对数对左区间排序,若区间不重合,直接追加,并更新start,end;若区间重合,探索右边界,直到不重合

func merge(intervals [][]int) [][]int {sort.Slice(intervals, func(i, j int) bool {return intervals[i][0] < intervals[j][0]})res := [][]int{}start, end := intervals[0][0], intervals[0][1]for i := 1; i < len(intervals); i++ {if end < intervals[i][0] {res = append(res, []int{start, end})start, end = intervals[i][0], intervals[i][1]} else {end = max(intervals[i][1], end)}}res = append(res, []int{start,end})return res
}

代码随想录文章详解

435.无重叠区间
763.划分字母区间
56.合并区间

总结

思路猜对一半一半的,细节思考不到

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

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

相关文章

【ansible】自动化运维ansible之playbook剧本编写与运行

目录 一、ansible剧本playbook的组成 二、palybook的基础应用: 实操1&#xff1a;通过palybooks完成nginx的安装 第一种&#xff1a;通过yum安装nginx 第二种&#xff1a;通过编译安装nginx 实操2&#xff1a;playbook定义、引用变量​​​​​​​ 实操3&#xff1a;通过…

有哪几种行为会导致服务器被入侵

导致服务器被入侵的行为有很多种&#xff0c;以下是一些常见的行为&#xff1a; 系统漏洞&#xff1a;服务器操作系统或软件存在漏洞&#xff0c;攻击者可以通过利用这些漏洞获取系统权限&#xff0c;从而入侵服务器。 弱口令&#xff1a;服务器的账号密码过于简单或者未及时更…

C#泛型及其应用:获取并显示员工信信息

目录 一、关于泛型 1.泛型定义 2.泛型与非泛型的区别 3.泛型的应用 &#xff08;1&#xff09;泛型类&#xff1a; &#xff08;2&#xff09;泛型方法&#xff1a; &#xff08;3&#xff09;泛型委托&#xff1a; &#xff08;4&#xff09;泛型接口&#xff1a; &a…

通过conda安装cudatoolikit和cudnn

通过conda安装cudatoolikit和cudnn 安装cudatoolkit安装cudnn安装cudatoolkit-dev 安装cudatoolkit conda install cudatoolkit11.3 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ 安装cudnn conda install cudnn8.5 -c https://mirrors.tuna.tsinghua.edu.…

ECMAScript 6+ 新特性 ( 二 )

2.12. class类 ES6 提供了更接近传统语言的写法&#xff0c;引入了 Class&#xff08;类&#xff09;这个概念&#xff0c;作为对象的模板。通过 class 关键字&#xff0c;可以定义类。 ES6 的 class 可以看作只是一个语法糖&#xff0c;它的绝大部分功能ES5 都可以做到&…

五种多目标优化算法(MOGWO、MOJS、NSWOA、MOPSO、MOAHA)性能对比(提供MATLAB代码)

一、5种多目标优化算法简介 1.1MOGWO 1.2MOJS 1.3NSWOA 1.4MOPSO 1.5MOAHA 二、5种多目标优化算法性能对比 为了测试5种算法的性能将其求解9个多目标测试函数&#xff08;zdt1、zdt2 、zdt3、 zdt4、 zdt6 、Schaffer、 Kursawe 、Viennet2、 Viennet3&#xff09;&#xff0…

安装python开发包管理环境miniconda

Python 管理 —— Conda Python 环境管理的价值在于将同一个 Python 版本的不同需求分开&#xff0c;比如&#xff1a;项目 A 和 项目 B 都需要 Python 3.10.11 这个版本&#xff0c;都用到了 requests 包&#xff0c;但是项目 A 需要 requests 2.1&#xff0c;而项目 B 需要 …

RPA岗位介绍 - RPA业务分析师

岗位描述 RPA业务分析师是连接IT部门与业务部门的关键角色,他们的主要职责是与团队合作梳理、识别、分析和理解业务流程,识别潜在的自动化机会,并将其转化为机器人流程自动化(RPA)的解决方案。 岗位职责 与业务部门合作,采集、梳理和分析业务需求,识别适用于自动化改造…

JDBC实现增删改查

此篇文章的基础来自https://blog.csdn.net/weixin_39038328/article/details/136197311?spm1001.2014.3001.5501 一、 数据查询 public static void search() {try {Class.forName("com.mysql.jdbc.Driver"); // 1.加载驱动//2.建立连接Connection connection (C…

day 21 (重点程序 )

先整理程序 文件拷贝 1.fgetc/fputc 1 #include<stdio.h>2 int main(void)3 {4 FILE *fsrc NULL;5 FILE *fdst NULL;6 char ch 0;7 fsrc fopen("src.txt","r");8 if(NULL fsrc)9 {10 perror("fail to f…

leetcode1049:最后一块石头的重量二

解题思路&#xff1a; 把石头堆分割成差不多的两堆&#xff0c;使得两堆差值最小 dp数组的含义&#xff1a; dp[j]:背包容量为j的背包最大重量(价值)为dp[j] dp[j] max(dp[j],dp[j-stones[i]] stones[i]) 初始化&#xff1a;&#xff08;dp数组的大小根据题目进行定义&a…

vue2中vuex的各项的各种调用方式,部分对比vue3的pinia

首先vuex的实例化比较特别&#xff0c;通过 导入Vue和Vuex&#xff0c;先Vue.use(Vuex)再 new Vuex.store()的方式来实例化仓库&#xff0c; 模块则是通过创建modules文件夹&#xff0c;在新建的文件中export符合规范的对象&#xff0c;这样约定俗成的方式来创建&#xff0c…

网络安全--网鼎杯2018漏洞复现(二次注入)

一、环境&#xff1a;在线测试平台 BUUCTF在线评测 (buuoj.cn) 二、进入界面先尝试万能账号 1or11# 换格式 hais1bux1 11or11# 三、万能的不行那我们就得想注册了&#xff0c;去register.php去看看 注册个账号 发现用户名回显&#xff0c;猜测考点为用户名处二次注入&…

Java 那些诗一般的 数据类型 (1)

本篇会加入个人的所谓‘鱼式疯言’ ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人…

【JavaScript 语法】

JavaScript 语法 ■ JavaScript 是什么■ JavaScript 语法■ JS 注释■ JS 结束符■ JS 输入输出语句■ JS 代码块■ JS 关键词■ JS 值■ JS 字面量 &#xff08;混合值&#xff09;■ JS 变量&#xff08;变量值&#xff09;■ JS 文本值 (字符串)■ JS 字符串可以是对象 ■ …

JS文本加密方法探究

在前端开发中&#xff0c;有时候我们需要对敏感文本进行简单的加密&#xff0c;以提高安全性。本文将介绍一种基于 JavaScript 实现的文本加密方法&#xff0c;使用了 Base64、Unicode 和 ROT13 编码。 示例代码 function encodeText(text) {// Base64编码var base64Encoded …

MongoDB 权限管理

文章目录 前言1. 权限控制1.1 MongoDB 默认角色1.1.1 读写角色1.1.2 管理角色1.1.3 其他角色1.1.4 超级用户角色 1.2 用户管理1.2.1 查看用户1.2.2 创建新用户1.2.3 调整角色1.2.4 删除用户1.2.4 修改密码 前言 上一篇 《MongoDB 单机安装部署》 文章中&#xff0c;为 MongoDB…

STL常用之vector,list,stack,queue,deque总结与对比

一&#xff0c;vector 1&#xff09;底层 vector的底层是开辟出来的一块连续空间&#xff0c;类似于数组&#xff0c;每次空间满了之后会根据不同的编译器有不同的扩容倍数。 2&#xff09;优劣 优点&#xff1a;随机访问效率高&#xff0c;因为地址是连续的&#xff0c;底层…

native smart contracts, a easy forgotten thing.

"内置的智能合约"是指在区块链网络中预先存在的智能合约。这些合约通常由区块链的开发者编写&#xff0c;并在区块链网络创建时就已经部署。这些合约的功能通常包括处理基本的交易和账户管理等核心功能。 以太坊网络就有一种内置的智能合约&#xff0c;叫做 ERC-20 …

Linux 驱动开发基础知识——APP 怎么读取按键值(十二)

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755qq.com &#x1f989;个人WeChat&#xff1a;Vir2021GKBS &#x1f43c;本文由…