当前位置: 首页 > news >正文

【贪心算法】(第十一篇)

目录

坏了的计算器(medium)

题目解析

讲解算法原理

编写代码

合并区间(medium)

题目解析

讲解算法原理

编写代码


坏了的计算器(medium)

题目解析

1.题目链接:. - 力扣(LeetCode)

2.题目描述

在显⽰着数字 startValue 的坏计算器上,我们可以执⾏以下两种操作:
◦ 双倍(Double):将显⽰屏上的数字乘2;
◦ 递减(Decrement):将显⽰屏上的数字减 1 。
给定两个整数 startValue 和 target 。返回显⽰数字 target 所需的最⼩操作数。
⽰例1:
输⼊:startValue=2,target=3
输出:2
解释:先进⾏双倍运算,然后再进⾏递减运算{2->4->3}.
⽰例2:
输⼊:startValue=5,target=8
输出:2
解释:先递减,再双倍{5->4->8}.
⽰例3:
输⼊:startValue=3,target=10
输出:3
解释:先双倍,然后递减,再双倍{3->6->5->10}.
提⽰:
◦ 1 <= startValue, target <= 10^9

讲解算法原理

解法(贪⼼):
贪⼼策略:
正难则反:

当「反着」来思考的时候,我们发现:
i. 当 end <= begin 的时候,只能执⾏「加法」操作;ii. 当 end > begin 的时候,对于「奇数」来说,只能执⾏「加法」操作;对于「偶数」来
说,最好的⽅式就是执⾏「除法」操作
这样的话,每次的操作都是「固定唯⼀」的。

编写代码

c++算法代码:

class Solution
{
public:int brokenCalc(int startValue, int target) {// 正难则反 + 贪⼼int ret = 0;while(target > startValue){if(target % 2 == 0) target /= 2;else target += 1;ret++;}return ret + startValue - target;}
};

java算法代码:

class Solution
{public int brokenCalc(int startValue, int target) {// 正难则反 + 贪⼼int ret = 0;while(target > startValue){if(target % 2 == 0) target /= 2;else target += 1;ret++;}return ret + startValue - target;}
}

合并区间(medium)

题目解析

1.题目链接:. - 力扣(LeetCode)

2.题目描述

以数组 intervals 表⽰若⼲个区间的集合,其中单个区间为 intervals[i] = [start(i), end(i)] 。请你合并所有重叠的区间,并返回⼀个不重叠的区间数组,该数组需恰好覆盖输⼊中的所有区间。

⽰例1:
输⼊:intervals=[[1,3],[2,6],[8,10],[15,18]]
输出:[[1,6],[8,10],[15,18]]
解释:区间[1,3]和[2,6]重叠,将它们合并为[1,6].
⽰例2:
输⼊:intervals=[[1,4],[4,5]]
输出:[[1,5]]
解释:区间[1,4]和[4,5]可被视为重叠区间。

提⽰:
◦ 1 <= intervals.length <= 10^4
◦ intervals[i].length == 2
◦ 0 <= start(i) <= end(i) <= 10^4

讲解算法原理

解法(排序+贪⼼):
贪⼼策略:

a. 先按照区间的「左端点」排序:此时我们会发现,能够合并的区间都是连续的;b. 然后从左往后,按照求「并集」的⽅式,合并区间。
如何求并集:
由于区间已经按照「左端点」排过序了,因此当两个区间「合并」的时候,合并后的区间:a. 左端点就是「前⼀个区间」的左端点;
b. 右端点就是两者「右端点的最⼤值」。

编写代码

c++算法代码:

class Solution
{
public:vector<vector<int>> merge(vector<vector<int>>& intervals) {// 1. 先按照左端点排序sort(intervals.begin(), intervals.end());// 2. 合并区间int left = intervals[0][0], right = intervals[0][1];vector<vector<int>> ret;for(int i = 1; i < intervals.size(); i++){int a = intervals[i][0], b = intervals[i][1];if(a <= right) // 有重叠部分{// 合并 - 求并集right = max(right, b);}else // 没有重叠部分{ret.push_back({left, right}); // 加⼊到结果中 left = a;right = b;}}// 别忘了最后⼀个区间ret.push_back({left, right});return ret;}
};

java算法代码:

class Solution
{public int[][] merge(int[][] intervals) {// 1. 按照左端点排序Arrays.sort(intervals, (v1, v2) -> {return v1[0] - v2[0];});// 2. 合并区间 - 求并集int left = intervals[0][0], right = intervals[0][1];List<int[]> ret = new ArrayList<>();for(int i = 1; i < intervals.length; i++){int a = intervals[i][0], b = intervals[i][1];if(a <= right) // 有重叠部分{// 合并 - 求并集right = Math.max(right, b);}else // 不能合并{ret.add(new int[]{left, right});left = a;right = b;}}// 别忘了最后⼀个区间ret.add(new int[]{left, right});return ret.toArray(new int[0][]);}
}

相关文章:

【贪心算法】(第十一篇)

目录 坏了的计算器&#xff08;medium&#xff09; 题目解析 讲解算法原理 编写代码 合并区间&#xff08;medium&#xff09; 题目解析 讲解算法原理 编写代码 坏了的计算器&#xff08;medium&#xff09; 题目解析 1.题目链接&#xff1a;. - 力扣&#xff08;Leet…...

React(五) 受控组件和非受控组件; 获取表单元素的值。高阶组件(重点),Portals; Fragment组件;严格模式StrictMode

文章目录 一、受控组件1. 什么是受控组件2. 收集input框内容3. 收集checkBox的值4. 下拉框select总结 二、非受控组件三、高阶组件1. 高阶组件的概念 (回顾高阶函数)2. 高阶组件应用&#xff1a;注入props(1) 高阶组件给---函数式组件注入props(2) 高阶组件给---类组件注入prop…...

深入解析 Jenkins 自动化任务链:三大方法实现任务间依赖与状态控制

文章目录 前言1. 使用 “Build Trigger”&#xff08;构建触发器&#xff09;2. 使用 Jenkins Pipeline 实现任务触发3. 使用 Jenkins 的 “Parameterized Trigger Plugin” 插件例子1&#xff1a;任务 A 成功后自动执行任务 B例子2&#xff1a;任务 A 成功后自动执行 Pipeline…...

无人机飞手执照培训为什么需要脱产学习?

无人机飞手执照培训需要脱产学习的原因主要基于以下几个方面&#xff1a; 一、知识体系的系统性与复杂性 无人机飞手培训涵盖的内容广泛且深入&#xff0c;包括无人机基础知识、飞行原理、气象学、法律法规等多个方面。这些知识体系相互关联&#xff0c;需要学员进行系统的学…...

PostgreSQL(十三)pgcrypto 扩展实现 AES、PGP 加密,并自定义存储过程

目录 一、pgcrypto 简介1.1 安装 pgcrypto 扩展1.2 pgcrypto 包含的函数 二、用法①&#xff1a;对称加密&#xff08;使用 AES、Blowfish 算法&#xff09;2.1 密钥2.2 密钥偏移量 三、用法②&#xff1a;PGP加解密3.1 什么是PGP算法&#xff1f;3.2 使用 GPG 生成密钥对3.3 列…...

uniapp使用webView打开的网页有缓存如何解决(APP,微信小程序)

1、给webView的url增加时间戳 this.webviewUrl ${url}?t${new Date().getTime()}; // 添加时间戳 2、在nginx服务器上添加响应头&#xff0c;告诉浏览器不可以使用缓存 location / {root /opt/webs/lcdp-client/dist;index index.html index.htm;try_files $uri $uri/ /…...

HarmonyOS 模块化设计

1.HarmonyOS 模块化设计 模块化设计文档   应用程序包开发与使用文档 1.1. 概述 组件化一直是移动端比较流行的开发方式&#xff0c;有着编译运行快&#xff0c;业务逻辑分明&#xff0c;任务划分清晰等优点&#xff0c;HarmonyOs组件化的使用&#xff0c;有利于模块之间的解…...

解决docker拉取readeck镜像报Error response from daemon: toomanyrequests问题

readeck 是一个内容中心&#xff0c;目前已支持中文翻译 这是本地化部署后的效果&#xff1a; 原命令为&#xff1a; docker run --rm -ti -p 8000:8000 -v readeck-data:/readeck codeberg.org/readeck/readeck:latest Unable to find image codeberg.org/readeck/readeck:la…...

duilib的应用 在双屏异分辨率的显示器上 运行显示不出来

背景&#xff1a;win11&#xff0c;duilib应用&#xff0c;双显示器&#xff0c;两台分辨率相同&#xff0c;分别设置不同的缩放以后&#xff0c;应用运行以后&#xff0c;程序闪一下消失或者程序还在&#xff0c;但是UI显示不出来。 原因 窗口风格设置不合理&#xff0c;所以…...

零代码快速开发智能体 |甘肃旅游通

在互联网信息爆炸的时代&#xff0c;寻找一处让人心动的旅游胜地往往需要花费大量的时间和精力。而今天&#xff0c;我要向大家介绍一款能够帮助你轻松规划甘肃之行的智能体——“甘肃旅游通”。这款智能体通过低代码开发&#xff0c;集合了丰富的旅游信息和个性化推荐功能&…...

【MATLAB源码-第187期】基于matlab的人工蜂群优化算法(ABC)机器人栅格路径规划,输出做短路径图和适应度曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 Artificial Bee Colony&#xff08;ABC&#xff09;算法是一种模仿蜜蜂觅食行为的优化算法&#xff0c;它通过模拟蜜蜂群体的社会结构和行为来解决数学优化问题。本文将详细介绍ABC算法的基本原理、算法流程、以及在实际应用…...

qt获取本地语言

获取本地语言 #define QSTRING_TO_UTF8(str) std::string(str.toUtf8()) enum LanguageType {kLanguageTypeChinese,kLanguageTypeTradition,kLanguageTypeEnglish };QLocale qlLanguage;QString qstrLangCode qlLanguage.languageToString(qlLanguage.language());LOG(INFO)…...

【Spring篇】Spring中的Bean管理

&#x1f9f8;安清h&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;【计算机网络】【Mybatis篇】 &#x1f6a6;作者简介&#xff1a;一个有趣爱睡觉的intp&#xff0c;期待和更多人分享自己所学知识的真诚大学生。 目录 &#x1f3af;Spring IOC容器 &#x1f6a…...

UV灯 VS LED灯,LED美甲灯是紫外线灯吗?

美甲灯是使甲油胶固化的重要工具&#xff0c;目前最常用的美甲灯一般是UV灯、LED灯以及CCFL灯。 一、不同的灯之间到底有什么区别呢&#xff1f;这次让我们好好看一下 UV灯&#xff1a; UV灯是紫外线灯管的简称。UV灯属于热阴极荧光灯&#xff0c;发出UVA&#xff08;长波紫…...

得物App3D博物馆亮相“两博会”,正品保障助力消费体验升级

近日&#xff0c;2024中国体育文化博览会、中国体育旅游博览会&#xff08;以下简称“两博会”&#xff09;在苏州国际展览中心盛大开幕。本次展会汇聚了众多国内外体育文化、体育旅游领域的顶尖企业和品牌&#xff0c;共同展示体育产业的发展成果和最新趋势。在C展馆C21展位&a…...

rancher安装并快速部署k8s 管理集群工具

主机准备 准备4台主机 3台用于k8s集群 &#xff0c;1台用于rancher 每台服务器新增配置文件 vi etc/sysctl.confnet.ipv4.ip_forward 1 刷新生效 sysctl –p 安装docker 安装的时候可以去github上检索rancher看看最新版本适配那个版本的docker&#xff0c;这里安装23.0.1…...

NVR接入录像回放平台EasyCVR视频融合平台语音对讲配置

国标GB28181视频平台EasyCVR视频融合平台可拓展性强、视频能力灵活&#xff0c;平台可提供视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、云台控制、语音对讲、智能分析接入等功能。其中&#xff0c;在语音对讲方面&#xff0c;NVR接入录像回放平台目前…...

八、Linux 系统安全:守护你的数字堡垒

Linux 系统安全&#xff1a;守护你的数字堡垒 在当今数字化时代&#xff0c;Linux 系统因其稳定性、高效性和开源性而被广泛应用于服务器、工作站以及各种嵌入式设备中。然而&#xff0c;随着网络攻击的日益频繁和复杂&#xff0c;确保 Linux 系统的安全变得至关重要。本文将深…...

PTA数据库编程练习合集

10-1 查询重量在[40,65]之间的产品信息 本题目要求编写SQL语句&#xff0c; 检索出product表中所有符合40 < Weight < 65的记录。 提示&#xff1a;请使用SELECT语句作答。 表结构: CREATE TABLE product (Pid varchar(20), --商品编号PName varchar(50), --商品名…...

分布式链路追踪-01初步认识SkyWalking

一 SkyWaling是什么&#xff1f; Skywalking是分布式系统的应用程序性能监视工具&#xff0c;专为微服务、云原生架构和基于容器&#xff08;Docker、K8s、Mesos&#xff09;架构而设计。SkyWalking 是观察性分析平台和应用性能管理系统&#xff0c;提供分布式追踪、服务网格遥…...

openpnp - 底部相机视觉识别CvPipeLine的参数bug修正

文章目录 openpnp - 底部相机视觉识别的CvPipeLine的参数bug概述笔记openpnp的视觉识别参数的错误原因备注补充 - 如果要直接改默认的底部视觉要注意END openpnp - 底部相机视觉识别的CvPipeLine的参数bug 概述 底部相机抓起一个SOD323的元件&#xff0c;进行视觉识别。 识别…...

C#从零开始学习(接口,强制转化和is)(7)

有时根据对象能做什么来分组,而不是根据他们继承的类.这就引入了接口 让无关的类做相同的动作 接口定义一个类必须实现的方法和属性 一个类实现一个接口时,必须包含接口中列出的所有方法和属性 向下强制转化 Appliance是CoffeeMaker的基类 Appliance powerConsumer new Co…...

算法Day-8

15. 三数之和 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元…...

屏蔽小米电视广告的方法

小米电视那个广告&#xff0c;太多&#xff0c;时间太长&#xff0c;影响观看感受&#xff0c;经过处理&#xff0c;成功屏蔽了小米电视的广告&#xff0c;提升了观影体验。 手动添加AD域名到 hosts 列表 小米(红米)电视关闭开机AD屏蔽hosts方法。 在路由器的hosts中配置。 …...

C#,自动驾驶技术,ASAM OpenDRIVE BS 1.8.0 规范摘要与C# .NET Parser

本文介绍自动驾驶技术的标准之一《ASAM OpenDRIVE》1.8.0 版本的规范摘要&#xff0c;及北京联高软件开发有限公司实现的 C# 版本 xodr 文件&#xff08;XML&#xff09; Parser 源代码。 本文档是 ASAM e.V. 的版权财产。 在更改常规许可条款时&#xff0c;ASAM 允许不受限制地…...

玩转PyCharm:常用操作和快捷键

常用操作和快捷键 PyCharm为写Python代码提供了自动补全和高亮语法功能&#xff0c;这也是PyCharm作为集成开发环境&#xff08;IDE&#xff09;的基本功能。PyCharm的“File”菜单有一个“Settings”菜单项&#xff08;macOS上是在“PyCharm”菜单的“Preferences…”菜单项&…...

HeterGCL 论文写作分析

HeterGCL 论文写作分析 这篇文章&#xff0c;由于理论证明较少&#xff0c;因此写作风格了polygcl是两种风格的。polygcl偏向理论的写作风格&#xff0c;而hetergcl就是实践派的风格 首先看标题&#xff0c;其的重点是Graph contrastive learning Framework。其重点是framewo…...

简单的windows java -jar 无法启动jar包解决方法

简单的windows java -jar 无法启动jar包解决方法 1. 问题 我们项目是使用nacos作为注册中心以及配置中心&#xff0c;我们本地使用idea 进行服务配置以及启动发现没有问题&#xff0c;然后我们的服务经过maven install 打包后发布到LINUX服务启动也没有问题&#xff0c;但是我…...

iPhone图片/照片/视频复制到win10系统的简单方法 - 照片导出

效果图 不同方法&#xff1a; 【推荐】爱思助手 一步到位....【不推荐&#xff0c;会错漏很多照片】 1) 开始&#xff0c;打开开始菜单最后一个“照片” 2) 打开外部设备“Apple iPhone” 3) 全选&#xff0c;“添加xx项”&#xff0c;选择本地...

ctfshow-文件上传-151-161

CTFshow文件上传 PHP文件上传&#xff1a;1、代码思路 黑名单是设置不能通过的用户&#xff0c;黑名单以外的用户都能通过。 phtml、pht、php3、php4、php5后缀都会按做php文件执行&#xff0c;且不在黑名单内。 2、绕过 找漏网之鱼:cer、php3、php4、phtml等。 大小写绕…...

网站模块/郑州搜狗关键词优化顾问

当电脑用了一段时间后&#xff0c;程序的运行速度越来越慢&#xff0c;不时还出现蓝屏、死机等现象&#xff0c;电脑运行时的噪音也越来越大……为什么会出现这些问题呢&#xff1f;这主要是你没有对自己的电脑进行维护。电脑也需要定期的进行维护&#xff0c;这样才能保证它正…...

新手做视频网站/十大收益最好的自媒体平台

数的形式类似于&#xff1a;123.45。 一个字符一个字符地读入&#xff0c;然后将其拼接成数。 关键是整数部分利用形如123(1*102)*103的表达方法&#xff0c;小数部分则为0.4564*0.15*0.01。 #include <stdio.h> #define radix 10 int main(void) {char ch;int n 0; …...

怎么把自己做的网站挂到外网上/免费发布信息的平台

像Facebook、开心001、人人网、优酷、豆瓣、淘宝等高流量、高并发的网站&#xff0c;单点数据库很难支撑得住&#xff0c;WEB2.0类型的网站中使用MySQL的居多&#xff0c;要么用MySQL自带的MySQL NDB Cluster(MySQL5.0及以上版本支持MySQL NDB Cluster功能)&#xff0c;或者用M…...

网络规划与设计专业/网站信息组织优化

点击上方“JAVA”&#xff0c;星标公众号重磅干货&#xff0c;第一时间送达目录&#xff1a;1.jdk1.7中的HashMap1.1 扩容造成死循环分析过程1.2 扩容造成数据丢失分析过程2.jdk1.8中HashMap总结前言&#xff1a;我们都知道HashMap是线程不安全的&#xff0c;在多线程环境中不建…...

怀化网站建设/企业网站设计服务

近期安装oracle到时候出现的一些问题记录1.安装完成无法启动,检查初始化参数2.监听配置1521以及其它端口都不通,检查是否存在多网卡,检查hosts文件,手工配置listener.ora等;3.ORA-00119: invalid specification for system parameter LOCAL_LISTENER检查hosts文件,listener.ora…...

重庆设计网站/汕头网站建设开发

最近看到一道有点意思的逻辑算法题&#xff0c;便着手实现一下。题目是要求打印 出N*N顺时针螺旋数组&#xff0c;规律如下&#xff1a;// 1 2 3 4 5//www.cppcns.com 16 17 18 19 6// 15 24 25 20 7// 14 23 22 21 8// 13 12 11 10 9java 实现示例代码如下&#xff1a;import …...