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

最大子数组和

最大子数组和

​ 给你一个整数数组 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 <= nums.length <= 105
  • -104 <= nums[i] <= 104

题解:

动态规划,写出状态转移方程问题就解了

f(i) 代表以第 i 个数结尾的「连续子数组的最大和」

f (i)=max{f(i−1)+nums[i],nums[i]}

func maxSubArray(nums []int) int {
    n := len(nums)
    bp := make([]int, n)
    ans := nums[0]
    bp[0] = nums[0]
    for i := 1; i < n; i++ {
        bp[i] = max(nums[i], bp[i - 1] + nums[i])
        if ans < bp[i] {
            ans = bp[i]
        }
    }
    return ans
}

func max(a,b int) int {
    if a > b {
        return a
    } else {
        return b
    }
} 
class Solution {
    public int maxSubArray(int[] nums) {
        int pre = nums[0];
        int ans = nums[0];
        for(int i = 1; i < nums.length; i++) {
            pre = Math.max(pre + nums[i], nums[i]);
            if(ans < pre) ans = pre;
        }
        return ans;
    }
}

PS:

​ 最近太忙了,所以刷题尽量偏向思路简单或者代码逻辑清晰的题目写,节省时间同时巩固语法基础


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

相关文章:

  • 数据结构-集合
  • stringUtils详细解释
  • Kubernetes在容器编排中的应用
  • const限定符-C语言中指针的“可变与不可变”法则
  • fastapi 查询参数支持 Pydantic Model:参数校验与配置技巧
  • MySQ怎么使用语法介绍(详细)
  • vector和docker的区别?
  • RK3568平台开发系列讲解(GPIO篇)基于整数的GPIO接口
  • https网站 请求http图片报错:net::ERR_SSL_PROTOCOL_ERROR
  • 低空载功耗,高能源利用率 BDA5-20W BOSHIDA DCDC
  • 区块链赋能Web3:数据透明与隐私保护的新纪元
  • 如何解决亚马逊商家IP问题:静态住宅IP的优势与选择指南
  • C#界面设计
  • 深度学习中gpu的写法
  • 另一个角度的“业务向前,数据库向后”
  • Rust 整数
  • vue读取本地excel文件并渲染到列表页面
  • 低代码开发
  • Tofu AI视频处理模块视频输入配置方法
  • LeetCode 热题100 之 多维动态规划
  • 在 Flutter 应用中调用后端接口的方法
  • Linux高阶——1109—线程函数线程属性线程分类
  • 【缓存策略】你知道 Write Around(缓存绕过写)这个缓存策略吗?
  • SQL Servers审核提高数据库安全性
  • 机器学习day1-数据集
  • Ubuntu23.10下解决C语言调用mysql.h问题