【JS 贪心算法常见步骤】
贪心算法是一种解决优化问题的算法,其思想是在每一步选择中选择当前状态下最优解,从而达到全局最优解的目的。
以下是贪心算法的一些常见步骤:
-
将问题模型化为一个包含若干子问题的问题集合,每个子问题都有一个最优解。
-
对于每个子问题,选择一个局部最优解,并将其合并到全局解中。
-
对于每个子问题,都执行步骤2,知道所有局部最优解都合并为一个全局最优解。
接下来,让我们通过一个例子来演示贪心算法。
例子:活动选择
假设有一些活动,每个活动都有一个开始时间和结束时间。你希望从这些活动中选择尽可能多的活动,以便你可以参加尽可能多的活动。但是,你不能同时参加两个活动,因为它们有冲突的时间。如何解决这个问题?
算法步骤:
-
将所有活动按照结束时间从早到晚排序。
-
从第一个活动开始,选择第一个可行的活动,也就是第一个活动的结束时间早于或等于第二个活动的开始时间。
-
重复步骤2,直到没有可行的活动为止。
实现:
function activitySelection(start, end) {const n = start.length;const activities = [];// 构建活动对象集合for (let i = 0; i < n; i++) {activities.push({ start: start[i], end: end[i] });}// 按照结束时间从早到晚排序activities.sort((a, b) => a.end - b.end);// 选择第一个可行的活动并加入结果集合const result = [activities[0]];let lastActivityEnd = activities[0].end;// 选择其它可行的活动并加入结果集合for (let i = 1; i < n; i++) {if (activities[i].start >= lastActivityEnd) {result.push(activities[i]);lastActivityEnd = activities[i].end;}}return result;
}// 示例
const start = [0, 1, 2, 3, 4, 5];
const end = [6, 3, 4, 5, 8, 5];
console.log(activitySelection(start, end));
// 结果:[
// { start: 0, end: 6 },
// { start: 3, end: 5 },
// { start: 5, end: 5 },
// { start: 5, end: 8 }
// ]
在上面的例子中,我们将所有活动按照结束时间排序,然后从第一个活动开始选择可行的活动并加入结果集合。这里选择的是局部最优解,即选择结束时间最早的活动。通过这种方式,我们可以得到全局最优解,即参加尽可能多的活动。
相关文章:
【JS 贪心算法常见步骤】
贪心算法是一种解决优化问题的算法,其思想是在每一步选择中选择当前状态下最优解,从而达到全局最优解的目的。 以下是贪心算法的一些常见步骤: 将问题模型化为一个包含若干子问题的问题集合,每个子问题都有一个最优解。 对于每个…...
应用案例|基于三维机器视觉的机器人纸箱拆码垛应用解决方案
Part.1 项目背景 在现代物流和制造行业中,纸箱的拆码垛操作是一项重要且频繁的任务。传统的纸箱拆码垛工作通常由人工完成,这种方式存在劳动强度大、生产效率低以及人为操作容易导致错误等问题,严重影响物料的安全运输和质量。为了满足物流行…...
【ARM 嵌入式 编译 Makefile 系列 10 - Makefile sort 函数详细介绍】
文章目录 Makefile 函数 sort 学习Makefile 函数 sort 学习 sort 是Makefile的一个内建函数,它用于将列表中的词进行排序,并删除重复的词。sort函数的语法如下: $(sort list)list是你想要排序的单词列表。 下面是一个使用sort函数的简单示例: FOO = c b a c b a BAR =…...
Flask下载文件报错304 NOT MODIFIED
文章目录 问题描述解决方案参考文献 问题描述 前端 Vue 下下来的文件无法正常打开,大小比正常的略大一点,通过 Postman 直接调用是正常的 解决方案 由前端解决 如果响应大小比文件略大一点,从 responses 中取出关键数据再组成文件如果响应…...
AI Chat 设计模式:15. 桥接模式
本文是该系列的第十五篇,采用问答式的方式展开,问题由我提出,答案由 Chat AI 作出,灰色背景的文字则主要是我的一些思考和补充。 问题列表 Q.1 如果你是第一次接触桥接模式,那么你会有哪些疑问呢?A.1Q.2 什…...
Python批量替换Excel和Word中的关键字
一、问题的提出 有时,我们手头上有多个Excel或者Word文件,但是领导突然要求对某几个术语进行批量的修改,你是不是有要崩溃的感觉。因为这么多文件,要一个一个地打开文件,再进行批量替换修改,几个文件还好&…...
Codeforces算法心得——A. Array Coloring
大家好,我是晴天学长,确实全世界最大的算法竞赛平台有很多独特且创新的地方,后面我会持续的更新的!加油!💪💪💪 1 )A. Array Coloring 2) .算法思路 数组中的奇数个数一…...
论文阅读:《Waymo Public Road Safety Performance Data》
文章目录 1 背景2 方法2.1 数据来源2.2 碰撞数据 3 碰撞事件分析4 讨论 1 背景 这篇文章是讲waymo道路安全性能数据分析的,主要想表达的是waymo自动驾驶系统在安全上面的出色表现,以向政府、大众提高自己产品的公信力。 这篇文章分析的数据是自从2019年到…...
url中的特殊符号及特殊字符编码对照表
有些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了。 编码的格式为:%加字符的ASCII码,即一个百分号%,后面跟对应字符的ASCII(16进制)码值。例如 空格的…...
【C++】详解用标准库的std::mt19937生成随机数
2023年8月16日,周三晚上 写了1个半小时 目录 概述英文文档什么是mt19937什么是状态大小头文件std::mt19937的常用成员函数1. 构造函数:2. 种子操作函数:3. 随机数生成函数:4. 辅助函数:生成种子值方法1:使…...
科大讯飞发布星火认知大模型2.0版——体验实测
8月15日,科大讯飞举行讯飞星火认知大模型V2.0升级发布会,对外展示其升级后的大模型代码能力和多模态能力,同时发布并升级搭载讯飞星火认知大模型V2.0能力的多项应用和产品。自5月6日首发以来,星火认知大模型经历V1.5版本的迭代&am…...
部署mysql到win10电脑上
中间出现了很多问题, 记录一下 我这边是去官网下载的 ,链接:https://dev.mysql.com/downloads/mysql/ 我这边选了不是最新版本的MySQL,因为第一次安装8.1.0版本的,死活运行不起来,直接卸载安重装了&#x…...
nginx+php 出现502 bad gateway
nginxphp 出现502 bad gateway,一般这都不是nginx的问题,而是由于 fastcgi或者php的问题导致的,常见的有以下几种。 1. php.ini 的memory_limit 过小(如果有个别php程序进程需要占用极大内存时这个必须注意) 2. ph…...
基于LVQ神经网络的人脸朝向识别
1案例背景 1.1人脸识别概述 人脸识别作为一个复杂的模式识别问题,近年来受到了广泛的关注,识别领域的各种方法在这个问题上各显所长,而且发展出了许多新方法,大大丰富和拓宽了模式识别的方向。人脸识别、检测,跟踪、特征定位等技术近年来一直是研究的热点。人脸识别是人脸应用…...
Leetcode Top 100 Liked Questions(序号53~74)
53. Maximum Subarray 题意:一个数组,找到和最大的子串 我的思路 我记得好像On的动态规划来做的?但是想不起来了,先死做,用的前缀和——TLE超时 那就只能想想dp怎么做了 假设dp[i]表示的是以 i 为右端点的最大的…...
Rabbitmq消息不丢失
目录 一、消息不丢失1.消息确认2.消息确认业务封装2.1 发送确认消息测试2.2 消息发送失败,设置重发机制 一、消息不丢失 消息的不丢失,在MQ角度考虑,一般有三种途径: 1,生产者不丢数据 2,MQ服务器不丢数据…...
Kotlin runBlocking launch多个协程读写mutableListOf时序
Kotlin runBlocking launch多个协程读写mutableListOf时序 import kotlinx.coroutines.delay import kotlinx.coroutines.launch import kotlinx.coroutines.runBlockingfun main(args: Array<String>) {var lists mutableListOf<String>()runBlocking {launch {r…...
Spring Cloud微服务治理框架深度解析
在学习一个技术之前,首先我们要了解它是做什么的,我们为什么要用它。不然看再多资料都理解不了,因此我们先来讲解下Spring Cloud Spring Cloud是一套微服务治理框架,几乎考虑到了微服务治理的方方面面。那么接下来具体说下 Spring…...
设计模式之原型模式Prototype的C++实现
1、原型模式提出 在软件功能设计中,经常面临着“某些结构复杂的对象”的创建工作,且创建的对象想拥有其他对象在某一刻的状态,则可以使用原型模型。原型模型是通过拷贝构造函数来创建对象,并且该对象拥有其他对象在某一刻的状态。…...
Java 中操作 Redis
文章目录 一、Redis 常用数据类型二、Redis 常用操作命令1. 字符串命令2. 哈希命令3. 列表命令4. 集合命令5. 有序集合命令6. 通用命令 三、在 Java 中操作 Redis1. 导入 maven 坐标2. 配置 Redis 数据源3. 编写配置类 四、在代码中的具体使用 一、Redis 常用数据类型 Redis 存…...
阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
LabVIEW双光子成像系统技术
双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...
