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

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

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

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

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

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

法一:贪心算法

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.返回最大和,即为答案。

法二:动态规划

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;}
}

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

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

方法一:排序 

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.lryc.cn/news/411608.html

相关文章:

  • 【Hot100】LeetCode—169. 多数元素
  • 专科、本科、研究生是按照什么分类的?
  • 关于实时ODS层数仓搭建的三个问题
  • 微信仿H5支付是什么
  • 网络安全知识竞赛规则及流程方案
  • 赞!蚓链用数字化打造助农扶农电商平台!
  • RocketMQ延时消息
  • 【C++/STL】:哈希的应用 -- 位图布隆过滤器
  • 非线性面板数据实证模型及 Stata 具体操作步骤
  • 视角 | 麻省理工学院提出出温度计校准法,专治AI大模型过度自信
  • 昇思25天学习打卡营第XX天|CycleGAN图像风格迁移互换
  • 嵌入式Linux学习: interrupt实验
  • GPT-4o mini 来袭:开发者如何驾驭新一代AI模型?
  • 校园点餐系统
  • 进口不锈钢309S螺栓的应用优势
  • C# 设计模式之工厂方法模式
  • Webpack 从入门到精通
  • 基于VScode和C++ 实现Protobuf数据格式的通信
  • linux环境openssl升级
  • 150Kg载重遥控履带式无人车技术详解
  • STM32的外部中断详解
  • 关于python问题 ,生成的excel文件内无爬取的数据存在,请问应如何解决?
  • 详细介绍Avalonia中的文件操作StorageProvider服务
  • 「7.31更新日志」JVS·智能BI、逻辑、规则引擎功能更新说明
  • 编程语言 | C | 代码整理 | 4月
  • 模板可变参数
  • 是你!是你!我们的黄金写手!
  • QT 获取用于获取特定屏幕坐标处的最上层小部件(父与子关系的类)
  • 【应急响应】Linux权限维持 -隐藏权限
  • 还有哪些AI应用案例目前备受关注