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

leetcode——最大子数组和(java)

给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

子数组是数组中的一个连续部分。

示例 1:

输入:nums = [-2,1,-3,4,-1,2,1,-5,4]
输出:6
解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。

示例 2:

输入:nums = [1]
输出:1

示例 3:

输入:nums = [5,4,-1,7,8]
输出:23

解题方法:(动态规划)(写法一)

1.首先经过分析,分治法可以简答的解决这道题,首先初始化结果变量为极小值,然后开始遍历数组,并且累加遍历到的元素。

2.然后当我们的和大于结果变量时,更新结果;如果小于等于0时,我们将sum初始化为0

class Solution {
    public int maxSubArray(int[] nums) {
        int sum = 0, max = Integer.MIN_VALUE;
        int n = nums.length;
        for (int i = 0; i < n; i++) {
            sum += nums[i];
            if (sum > max) {
                max = sum;
            } 
            if (sum <= 0) {
                sum = 0;
            }
        }
        return max;
    }
}

解题方法:(动态规划)(写法二)

class Solution {
    public int maxSubArray(int[] nums) {
        int ans = Integer.MIN_VALUE;
        int f = 0;
        for (int x : nums) {
            f = Math.max(f, 0) + x;
            ans = Math.max(ans, f);
        }
        return ans;
    }
}


http://www.kler.cn/a/518030.html

相关文章:

  • 理解C++中的右值引用
  • 机器学习周报-文献阅读
  • 八股文 (一)
  • 微信小程序-点餐(美食屋)02开发实践
  • 代码随想录算法训练营day31(补0124)
  • 网络安全 | F5-Attack Signatures详解
  • 15.7k!DISM++一款快捷的系统优化工具
  • 使用RocketMQ 的业务系统怎么处理消息的积压?
  • kafka-保姆级配置说明(broker)
  • 计算机视觉-卷积
  • Qt调用ffmpeg库实现简易视频播放器示例
  • 嵌入式音视频开发——视频篇(三)
  • 如何在Linux中找到MySQL的安装目录
  • python实现http文件服务器访问下载
  • YOLOv11改进,YOLOv11添加ASFF检测头,并添加小目标检测层(四头检测),适合目标检测、分割等任务,全网首发
  • 微信小程序云开发服务端存储API 从云存储空间删除文件
  • DeepSeek R1 模型详解与微调
  • 【NLP基础】Word2Vec 中 CBOW 指什么?
  • 软件工程的概论
  • 【第二天】零基础入门刷题Python-算法篇-数据结构与算法的介绍-五种常见的排序算法(持续更新)
  • 关于回调函数(callback)
  • 一篇博文了解JVM的各个内存区域
  • Arduino Uno 和 1.44 英寸 TFT 屏幕(SPI 接口)初体验
  • 1.24寒假作业
  • 11、性能测试及监控Nginx动静分离配置
  • 数据结构——实验八·学生管理系统