Leetcode贪心算法

题目:划分字母区间  题号:763

class Solution {public List<Integer> partitionLabels(String s) {List<Integer> list = new LinkedList();int[] edge = new int[27];char[] chars = s.toCharArray();for(int i = 0; i <chars.length;i++){edge[chars[i] - 'a'] = i; }int left = -1;int right = 0;for(int i = 0; i < chars.length;i++){right = Math.max(right, edge[chars[i] - 'a']);if(right == i){list.add(i - left);left = right ;}}return list;}
}

首先创建一个结果集用来存放我们想要的结果。然后用for循环进行遍历数组,用每一个数字和a进行相减得到他们的阿斯克码值这个值对i进行赋值。取到一个最大的数,这个就是我们的右区间,然后再更新左区间,继续遍历。

题目:合并区间  题号:56

class Solution {public int[][] merge(int[][] intervals) {LinkedList<int[]> result = new LinkedList<>();Arrays.sort(intervals,(a,b) -> Integer.compare(a[0],b[0]));result.add(intervals[0]);for(int i = 1; i < intervals.length;i++){if(intervals[i][0] <= result.getLast()[1]){int start = result.getLast()[0]; //左区间int end = Math.max(intervals[i][1],result.getLast()[1]); //右区间result.removeLast();result.add(new int[]{start, end});}else{result.add(intervals[i]);}}return result.toArray(new int[result.size()][]);}
}

这道题目的核心是进行区间的比较和判断,需要将i的右区间和i-1的左区间进行比较,如果有重合的部分那就进行合并,在这里使用的是result取出最后一个元素,方便后续处理。如果没有重合部分,那就那就添加到我们的result中。

题目:单调递增的数字 题号:738

class Solution {public int monotoneIncreasingDigits(int n) {String s = String.valueOf(n);char[] arr = s.toCharArray();int flag = s.length();//从后遍历 利用flag进行标记for(int i = s.length() - 1; i > 0;i--){if(arr[i-1] > arr[i]){arr[i-1]--;flag = i;}}for(int i = flag;i < arr.length;i++){arr[i] = '9';}return Integer.parseInt(String.valueOf(arr));}
}

题目的核心是从后向左去遍历这个数字,当然在这之前需要将数组转换为字符数字。方便后续的遍。如果在遍历时发现前一期数字比后一个数字大的话就将他-1直到小于i位置的数字为止。然后标记flag,把flag后面的数字全部更新为9,这时才能达到最大的状态。

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

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

相关文章

【密码学基础】加密消息语法 CMS:给数字信息装个 “安全保险箱”

如果说数字世界是一座繁忙的城市&#xff0c;那么我们每天发送的邮件、合同、软件安装包就是穿梭在城市里的 “包裹”。有些包裹里装着隐私&#xff08;比如银行账单&#xff09;&#xff0c;有些装着重要承诺&#xff08;比如电子合同&#xff09;&#xff0c;还有些关系到设备…

leetcode算法刷题的第二十天

1.leetcode 39.组合总和 题目链接 这道题里面的数组里面的数字是可以重复使用的&#xff0c;那可能就会有人想&#xff0c;出现了0怎么办&#xff0c;有这个想法的很好&#xff0c;但是题目要求数组里面的数字最小值为1&#xff0c;这就可以让人放心了。但是有总和的限制&…

使用Spoon报错Driver class ‘com.microsoft.sqlserver.jdbc.SQLServerDriver‘ could not be found解决方法

使用Spoon报错Driver class ‘com.microsoft.sqlserver.jdbc.SQLServerDriver’ could not be found 产生原因 出现这个错误是因为Spoon无法找到用于连接MS SQL Server的JDBC驱动程序。该驱动程序是一个jar文件,通常需要手动下载并配置。 解决方案 下载JDBC驱动程序: 访问 M…

【实时Linux实战系列】基于实时Linux的音频实时监控系统

在当今数字化时代&#xff0c;音频监控系统在许多领域都有着广泛的应用&#xff0c;例如安全监控、工业环境监测、智能交通等。音频实时监控系统能够实时采集、分析音频信号&#xff0c;并在检测到异常时发出警报&#xff0c;这对于提高安全性、优化生产流程和提升用户体验都有…

改造thinkphp6的命令行工具和分批次导出大量数据

文章目录基本用法传入参数addArgumentaddOption参数提示导出数据示例准备工作执行导出基本用法 在thinkphp6框架中&#xff0c;自带了命令行工具&#xff0c;通过配置 config/console.php &#xff0c;添加自定义的命令&#xff1a; return [commands > [//...//新增的自定…

外汇中高频 CTA 风控策略回测案例

在汇率波动日益频繁、企业与机构对风险管理要求不断提高的背景下&#xff0c;外汇交易策略已成为资产配置与对冲操作的重要工具。其中&#xff0c;CTA 策略在外汇交易中具有非常重要的实际应用价值&#xff0c;在风险控制、趋势捕捉、资金效率与交易实用性之间取得了良好平衡。…

【iOS】内存管理及部分Runtime复习

1.继承链关于继承链存在两个指针 类的superclass指向父类 父类的sp指向根类 根类的sp指向空 元类的sp指向父类的元类 最终指向根元类 而根元类的sp指向根类 而关于isa指针 对象的isa指针指向它所属的类 类的isa指针指向元类 元类的isa指针指向根元类 根元类的isa指针指向自己2.…

重置 Windows Server 2019 管理员账户密码

文章目录前言1. 重置方法2. 重置流程总结前言 之前因为参加华为存储的 HCIE 培训和考试&#xff0c;以及在项目上交付和运维&#xff0c;占用了较多的时间和精力&#xff0c;导致很长一段时间没有去写博客&#xff0c;前些天登录 CSDN 博客发现原力已失效&#xff0c;才知道平…

.Net Core Web 架构(管道机制)的底层实现

.Net Core Web 架构(管道机制)的底层实现 .NET Core Web 程序的底层实现是一个复杂的体系&#xff0c;但我们可以将其分解为几个核心部分来理解。它本质上是一个将 HTTP 请求转换为开发者代码执行&#xff0c;并将执行结果返回为 HTTP 响应的精密管道。 下图清晰地展示了这一处…

计算图的力量:从 PyTorch 动态图到 TensorFlow 静态图的全景与实战

计算图的力量:从 PyTorch 动态图到 TensorFlow 静态图的全景与实战 开篇引入 Python 从简洁优雅的脚本语言,成长为连接数据科学、机器学习与工程化部署的“胶水语言”。在这段进化中,深度学习框架把“数学表达式”变成可执行的“计算图”,让自动求导与高性能并行成为日常…

CentOS 7能联网但yum报错:Could not resolve host: mirrorlist.centos.org 终极解决方法

CentOS 7能联网但yum报错&#xff1a;Could not resolve host: mirrorlist.centos.org 终极解决方法关键词&#xff1a;CentOS 7, yum, Could not resolve host, mirrorlist.centos.org, 软件源, EOL问题描述大家好&#xff01;相信很多还在使用 CentOS 7 的朋友都遇到了这个问…

【解锁Photonics for AI:系统学习光学神经网络与超表面设计,成就下一代光芯片工程师】

### 光学神经网络基础 光学神经网络利用光子替代电子进行信息处理&#xff0c;具有低延迟、高带宽和低功耗优势。核心组件包括衍射光学元件&#xff08;DOE&#xff09;、马赫-曾德尔干涉仪&#xff08;MZI&#xff09;和微环谐振器。 衍射神经网络&#xff08;DNN&#xff09…

基于SrpingBoot和Vue的共享笔记管理系统-项目分享

基于SrpingBoot和Vue的共享笔记管理系统-项目分享项目介绍项目摘要用户管理实体图笔记分享管理实体图系统总体功能图写在最后项目介绍 使用者&#xff1a;管理员、用户 开发技术&#xff1a;MySQLJavaSpringBootVue 项目摘要 随着网络技术的普及和人们阅读习惯的改变&#x…

我的6年!

修改前&#xff1a;https://t.zsxq.com/ERUuD Data&#xff1a;2025/08/27 更新 你好&#xff0c;我是老成。我在星球中用红包&#x1f9e7;的方式鼓励大家发自我介绍&#xff0c;但是我又想&#xff0c;为带动大家&#xff0c;我得做个榜样&#xff0c;为此我重新修改一下我的…

深入理解事务一致性和隔离性

事务是数据库系统提供的高级抽象&#xff0c;利用事务可以让应用层付出较少的努力就能提供较高的一致性保障&#xff0c;而不用过度关心类似于竞争条件、不完全写入、数据丢失等问题。 稍微学过用过数据库的同学&#xff0c;大都接触过事务这个概念&#xff0c;通常也知道事务…

最优化方法学习笔记

什么是“最优化”&#xff1f;最优化方法的核心思想是&#xff1a;在给定的条件下&#xff0c;找到一个最佳的解决方案。这个“最佳”通常是指使得某个目标函数&#xff08;可以是最小化或最大化的数值&#xff09;达到极致的答案。简单来说&#xff0c;就是如何用最好的方式做…

多模态融合新纪元:Ovis2.5 本地部署教程,实现文本、图像与代码的深度协同推理

一、简介Ovis2.5 旨在实现原生分辨率的视觉感知和增强的多模态推理。它集成了一个原生分辨率的视觉变换器&#xff08;NaViT&#xff09;&#xff0c;可以处理原始、可变分辨率的图像&#xff0c;消除了固定分辨率切片的需要&#xff0c;并保留了精细细节和全局布局——这对于图…

力扣hot100:滑动窗口最大值优化策略及思路讲解(239)

记录一下今天完成的算法题&#xff0c;虽然这个难度是困难&#xff0c;但感觉没有那个560.和为k的子数组和难想&#xff0c;这个题主要就前期遇到个优先队列&#xff0c;因为之前没用过&#xff0c;不太熟悉&#xff0c;剩下的思路感觉都属于正常难度问题描述原始思路&#xff…

“互联网 +”时代下开源 AI 大模型 AI 智能名片 S2B2C 商城小程序:行业变革与未来展望

摘要&#xff1a;在“互联网 ”浪潮的推动下&#xff0c;各行业正经历着深度融合与变革。互联网、新零售、云计算等新兴技术成为行业发展的关键驱动力。本文聚焦开源 AI 大模型 AI 智能名片 S2B2C 商城小程序这一创新模式&#xff0c;分析其在“互联网 ”背景下的内涵与优势&am…

ROS2通信机制实战——从“单向传数据”到“双向发请求”(二)

第2天&#xff1a;ROS2通信机制实战——从“单向传数据”到“双向发请求” 做机器人开发时&#xff1a;“为什么控制机器人前进用话题&#xff0c;而让机器人报位置要用服务&#xff1f;”其实答案很简单——ROS2的通信机制是“按需设计”的&#xff1a;话题适合高频、单向的数…