《LeetCode热题100》---<5.①普通数组篇五道>

news/2024/9/15 21:33:07/ 标签: leetcode, 算法, java

本篇博客讲解LeetCode热题100道普通数组篇中的五道题

第一道:最大子数组和(中等)

第二道:合并区间(中等)

第一道:最大子数组和(中等)

法一:贪心算法

java">class Solution {public int maxSubArray(int[] nums) {int len = nums.length;int cur_sum  = nums[0];int max_sum = cur_sum;for(int i = 1; i <len; i++){cur_sum = Math.max(nums[i],cur_sum+nums[i]);max_sum = Math.max(cur_sum,max_sum);}return max_sum;}
}

1.将当前和与最大和设置为数组第一个元素 

2.从第二个元素开始遍历数组元素。

  • 令当前和等于 当前元素当前和+当前元素 的最大值
  • 令最大和等于 当前和 与 最大和 的最大值

3.返回最大和,即为答案。

法二:动态规划

java">class Solution {public int maxSubArray(int[] nums) {int pre = 0, maxAns = nums[0];for (int x : nums) {pre = Math.max(pre + x, x);maxAns = Math.max(maxAns, pre);}return maxAns;}
}

 这个动态规划的答案实际上和上面讲的贪心算法的答案是一样的。

第二道:合并区间(中等)

方法一:排序 

java">class Solution {public int[][] merge(int[][] intervals) {if (intervals.length == 0) {return new int[0][2];}Arrays.sort(intervals, new Comparator<int[]>() {public int compare(int[] interval1, int[] interval2) {return interval1[0] - interval2[0];}});List<int[]> merged = new ArrayList<int[]>();for (int i = 0; i < intervals.length; ++i) {int L = intervals[i][0], R = intervals[i][1];if (merged.size() == 0 || merged.get(merged.size() - 1)[1] < L) {merged.add(new int[]{L, R});} else {merged.get(merged.size() - 1)[1] = Math.max(merged.get(merged.size() - 1)[1], R);}}return merged.toArray(new int[merged.size()][]);}
}
  • 检查空数组:如果输入的区间数组 intervals 为空,则返回一个空的二维数组。
  • 排序区间:将所有区间按起始位置进行排序,确保按从左到右的顺序处理区间。
  • 合并区间
    • 初始化一个列表 merged,用于存储合并后的区间。
    • 遍历每个区间,获取当前区间的起始位置 L 和结束位置 R
    • 如果 merged 为空,或者当前区间的起始位置 L 大于 merged 中最后一个区间的结束位置,则直接将当前区间加入 merged
    • 否则,将当前区间与 merged 中最后一个区间合并,更新最后一个区间的结束位置为二者的最大值。
  • 返回结果:将 merged 列表转换为二维数组并返回。

 通过先对区间进行排序,然后逐一合并重叠区间,最终返回合并后的区间数组。


http://www.ppmy.cn/news/1505063.html

相关文章

共享`pexlinux`数据文件的网络服务

实验环境准备&#xff1a; 1.红帽7主机 2.要全图形安装 3.配置网络为手动&#xff0c;配置网络可用 4.关闭vmware DHCP功能 一、kickstart自动安装脚本制作 1.安装图形化生成kickstart自动脚本安装工具 2.启动图形制作工具 3.图形配置脚本 这里使用的共享方式是http&#xff0…

酒店管理小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;酒店管理员管理&#xff0c;房间类型管理&#xff0c;房间信息管理&#xff0c;订单信息管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;房间信息…

微应用(Micro-Applications)、微前端(Micro Frontend)、Qiankun 框架之间的区别和联系

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo :联系我们:VX :tja6288 / EMAIL: 347969164@qq.com 文章目录 微应用(Micro-Applications)、微…

Go语言加Vue3零基础入门全栈班11 Go语言+gorm用户管理系统实战 2024年08月03日 课程笔记

概述 如果您没有Golang的基础&#xff0c;应该学习如下前置课程。 Golang零基础入门Golang面向对象编程Go Web 基础Go语言开发REST API接口_20240728Go语言操作MySQL开发用户管理系统API教程_20240729Redis零基础快速入门_20231227GoRedis开发用户管理系统API实战_20240730Mo…

JS如何实现禁止截屏、打印、另存为操作?

禁止缓存可以前台HTML使用 <meta http-equiv="pragma" content="no-cache" /> 屏蔽选中、粘贴、复制、剪切、右键菜单、禁止新窗口打开 HTML <body οncοntextmenu="return false" onselectstart="return false" οncοn…

搭建 Rancher 服务,配置k8s集群

1. 前提条件 前提条件&#xff1a; 安装docker&#xff0c;要求版本各节点版本一致。网上还有额外的要求&#xff1a;关闭swap、禁用selinux等等。 2. 搭建 Rancher 服务 直接通过docker命令实现即可&#xff0c;很方便。 docker run -d \--name rancher \--restart unles…

go的并发任务如何优雅的实现错误终止

errgroup使用案例 在Go语言中&#xff0c;并发任务通常通过goroutine来实现&#xff0c;而错误处理和任务终止的优雅性则依赖于适当的同步机制和错误传播策略。 场景: 管理一个任务的一组子任务&#xff0c;每个子任务一个协程每个子任务必须保证都成功&#xff0c;一个出现…

注意!!可能这是系统分析师旧教程最后一次考试,赶紧学起来

系统分析师考试是全国计算机技术与软件专业技术资格考试的高级水平考试之一&#xff0c;它是一项专业考试&#xff0c;旨在通过对计算机系统的规划、分析和设计来培养行业内的专业技术人才。近日在国家版本数据中心&#xff0c;查到系统分析师已经有2024最新版的教程出来了&…

EasyAR_稀疏空间图

EasyAR_稀疏空间图 EasyAR4.6.3 丨 Unity2020.3.15f2 1.创建稀疏空间地图 在EasyAR开发中心后台创建Scene许可证密钥&#xff0c;并且使用稀疏空间地图 2.设置稀疏空间地图库名&#xff0c;对稀疏空间地图进行管理&#xff0c;设置密钥 3.复制密钥到Unity中 添加Spatial Map Ap…

Xml,Json,Protobuffer等序列化的区别。如何选型

Xml,Json,Protobuffer等序列化的区别。如何选型 序列化&#xff1a;将对象转换为字节序列的过程称为对象的序列化&#xff1b; 反序列化&#xff1a;将字节序列恢复为对象的过程称为对象的反序列化&#xff1b; 什么时候需要序列化&#xff1f; 当你需要把内存中的对象保存到一…

深入C# .NET核心:委托与事件机制全解析

摘要&#xff1a; 在C# .NET编程中&#xff0c;委托和事件是实现异步编程和对象间通信的关键机制。理解它们的工作原理对于编写高效、响应式的应用程序至关重要。本文将深入探讨C# .NET中的委托与事件&#xff0c;从基础概念到高级应用&#xff0c;为读者提供全面的指导。 正文…

IDC权威认可:亚信安全引跑中国DDI市场

近日&#xff0c;国际数据公司&#xff08;IDC&#xff09;正式发布了《IDC China Semiannual DDI Tracker, 2023H2》&#xff0c;亚信安全域名服务和地址分配及管理系统&#xff08;AIDDI&#xff09;凭借在企业核心网络防护中自动化、安全性、智能化的突出能力&#xff0c;占…

引领未来的智能革命:深度解析【人工智能】前沿技术与应用

前几天偶然发现了一个超棒的人工智能学习网站&#xff0c;内容通俗易懂&#xff0c;讲解风趣幽默&#xff0c;简直让人欲罢不能。忍不住分享给大家&#xff0c;点击这里立刻跳转&#xff0c;开启你的AI学习之旅吧&#xff01;前言 – 人工智能教程https://www.captainbed.cn/lz…

C# ?的使用

栏目总目录 可空类型标记符&#xff08;?&#xff09; 说明&#xff1a; 可空类型标记符?用于指示某个值类型&#xff08;如int、float等&#xff09;可以为null。这是C# 2.0引入的一个特性&#xff0c;用于处理数据库查询、JSON解析等场景中可能出现的空值。 示例代码&am…

深入研究Java的String常量池

文章目录 一、StringTable分析一段代码示例一示例二示例三 二、 intern1、StringTable位置2、StringTable 性能调优3、intern深入分析3.1 思考3.2 JDK6中的解释3.3 JDK7中的解释3.4 详细分析3.5 intern正确使用的例子3.6 intern使用不当的例子 一、StringTable 常量池中的字符…

PatchCore:工业异常检测中的全面召回

PatchCore&#xff1a;工业异常检测中的全面召回 前言相关介绍PatchCore的工作原理&#xff1a;优点&#xff1a;缺点&#xff1a; 实验环境项目地址LinuxWindows 项目结构具体用法准备数据进行训练进行测试 常见问题ModuleNotFoundError: No module named patchcore解决方法 O…

[PM]面试题-综合问题

思维题 说说当前的科技行业 web3是我比较感兴趣的方向, 在国内还处于起步阶段, web3重要的特点是去中心化, 依赖的技术有以太坊, 区块链, 智能合约, 现在位置还没有特别成熟的产品形态, 发展的比较好的方向就是数字藏品和游戏方向 列举一个你认为比较好的APP, 说明其独特之处…

一则悬空指针案例

int* foo() {int a; // 变量a的作用域开始a 100;char *c "xyz"; // 变量c的作用域开始return &a; } // 变量a和c的作用域结束先来看这样一段代码。这段代码虽然可以编译通过&#xff0c;但是其实非常糟糕&#xff0c;变量 a 和 c…

【linux运维】大型文件查询特定字符串方案总结(如2GB的文本文件)

对于大型文件&#xff08;如2GB的文本文件&#xff09;&#xff0c;直接使用 grep 或其他文本处理工具可能会消耗大量的内存资源。为了更高效地处理这种情况&#xff0c;可以采用以下几种策略&#xff1a; 1. 使用 grep 的性能优化 尽管 grep 是非常高效的工具&#xff0c;但…

Unity复制对象时让私有变量也被复制的简单方法

Unity复制对象时&#xff0c;如果一个变量为公共变量&#xff08;public&#xff09;&#xff0c;那么这个变量的值会被复制到新的对象中去&#xff0c;但是如果一个变量是私有变量&#xff08;private&#xff09;&#xff0c;默认是不会被复制的&#xff0c;如果希望被复制&a…