最大子数组问题

2023-11-01

假设有一个n长度的数组, 求数组中最大的非空子数组.即子数组各个元素相加之和最大

思路1

使用分治策略求解, 找到数组的中间位置mid, 定义两边位置为left, right;

在A[left, right] 中 要求解的子数组必然是以下三种情况之一:

1.最大连续子数组在 A[left, mid] 的子数组中

2.最大连续子数组在 A[mid+1, right] 的子数组中

3.最大连续子数组A[i, j]; 包含了A[mid],即 left <= i <= mid <= j <= right.

思路2 

设置DP数组, DP[i]表示数组 A[x, i]为当前从[left, i]的最大连续子数组, left <= x <= i;

当我们把第i+1个元素加入整个数组中时, 考虑DP[i]是否大于0, 如果是则DP[i+1]=DP[i]+A[i+1];

否则应当舍弃前面相加结果, 重新计算最大连续子数组即DP[i+1] = A[i+1];

这时算法时间复杂度为O(n);

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

最大子数组问题 的相关文章

  • 顺序表基本操作

    文章目录 1 顺序表插入元素 2 顺序表删除元素 3 顺序表查找元素 4 顺序表更改元素 1 顺序表插入元素 向顺序表中插入数据元素 根据插入位置的不同 可分为以下 3 种情况 插入到顺序表的表头 在表的中间位置插入元素 尾随顺序表中已有元
  • TCP/IP详解 卷1:协议 学习笔记 第十七章 TCP:传输控制协议

    TCP提供一种面向连接的 可靠的字节流服务 面向连接意味着两个使用TCP的应用 通常是一个客户一个服务器 在彼此交换数据前必须先建立一个TCP连接 在一个TCP连接中 仅有两方进行彼此通信 广播和多播不能用于TCP TCP提供可靠性的方法

随机推荐

  • Unity3D Animation、Animator和AnimationClip

    文章目录 Animation 字段 方法 Animator 字段 方法 AnimationClip 字段 方法 Animation 单一动画 一般使用在单一动画播放 占用资源小 字段 名称 作用 animatePhysics 如果打开这个选
  • qt中connect函数探究

    综合了一下网上资源 整理得出 QT 是一个跨平台的 C GUI 应用构架 它提供了丰富的窗口部件集 具有面向对象 易于扩展 真正的组件编程等特点 更为引人注目的是目前 Linux 上最为流行的 KDE 桌面环境就是建立在 QT 库的基础之上
  • Linux OOM killer机制介绍

    1 概念描述 Linux内核内存管理使用OOM killer Out Of Memory killer 机制 在系统内存不足时 选择性杀死一些进程以释放内存 以使系统继续运行 2 OOM killer产生的原因 2 1 malloc 内存分
  • 解决js的小数点问题

    diff fee should total fee add fee toFixed 2 console log diff fee
  • MATLAB----矩阵的运算

    文章目录 1 获取矩阵的行列数 1 1 获取矩阵的行和列 1 2 把矩阵的行和列分别赋值给变量 2 矩阵的转置和逆矩阵 2 1 矩阵的转置 2 2 矩阵的逆矩阵 3 特征值和特征向量 4 加 减 乘 除 乘方 运算 4 1 加法 4 2 减
  • Blender学习笔记 —— 资源整理(持续更新)

    从准备入门到跨过门槛 3D神器Blender 教程来了 一篇对Blender 3D功能入门介绍操作性质的文章 斑斓中国 Blender中文社区 关于Blender的各类资源很全 斑斓中国的优酷频道 都是Blender教学视频 创意齿轮CGD
  • Android开发从初级到高级学习路线

    Android开发需要具备的知识 编程基础 数据结构 C语言 Java语法 初级 首先需要购买一本Android入门的书籍 把Android官方文档中的training和guide看一遍 技术要求 比如四大组件如何使用 如何创建Servic
  • 微信小程序开发(七) view 组件

    view 组件的示例代码之横向布局和纵向布局 wxml
  • ggplot2读书笔记13:第十章 数据变换

    Data Transformation 10 1 简介 通常情况下 除了整理数据之外 我们还需要把原始数据做一些数据变换 聚合等 这时就要使用到dplyr包 本章中我们学习dplyr中四个重要的函数的用法 filter mutate gro
  • 如何选择合适的渗压计?

    渗压计的用途 渗压计是测量构筑物内部渗透 孔隙 水压力的传感器 一般直接测得水压力 kPa 再根据液体压强公式可换算为水位 渗压计应用非常广泛 可用于测量大坝坝体渗流压力 浸润线 绕坝渗流压力 坝基扬压力 尾矿库测压管水位 干孔深度 边坡
  • osg学习(七十四)Type mismatch in arithmetic operation between ‘vec2‘ and ‘int‘

    可能是手机端语法检查更严格 glsl语句是这样的 再桌面端执行没有问题 在手机端执行会提示上述错误 vec3 tmpNormal osg NormalMatrix osg Normal tmpNormal normalize tmpNorm
  • Redis02-高级使用

    本文基于 Redis6 2 7 和 CentOS 7 一 事务 首先要告诉大家 redis的事务和mysql的事务是不一样 1 1 事务指令 multi 开启事务 exec 提交事务 discard 回滚事务 一个事务从开始到执行会经历以下
  • SSE Intrinsics各函数介绍

    SIMD相关头文件包括 include
  • 图像矫正与车牌识别资料整理

    图像矫正 http blog csdn net zhtsunday article details 52094745 换了别的图片无法识别了 http download csdn net detail linoi 6812153 车牌识别图
  • pytorch损失函数(nn.L1Loss、nn.SmoothL1Loss、nn.MSELoss 、nn.CrossEntropyLoss、nn.NLLLoss)

    损失函数 是编译一个神经网络模型必须的两个参数之一 另一个是优化器 损失函数是指用于计算标签值和预测值之间差异的函数 常见的有多种损失函数可供选择 典型的有距离向量 绝对值向量等 nn L1Loss L1Loss 计算方法比较简单 原理就是
  • python,AttributeError: module 'random' has no attribute 'randint'

    错误 AttributeError module random has no attribute randint 原因 把random py作为文件名 和系统有冲突 修改文件名后 运行
  • C++11 auto类型说明符如for(atuo &x : s)

    include
  • 深入PMS源码(三)—— PMS中intent-filter的匹配架构

    1 简介 由前面深入PMS源码 一 PMS的启动过程和执行流程和深入PMS源码 二 APK的安装和卸载源码分析两篇文章知道 无论是Android系统启动后执行的PMS启动 还是使用PackageInstaller安装APK的过程 最终都会使
  • uni-app修改官方组件的默认样式

    原来是跟vue3 pc端项目一样的写法 例如
  • 最大子数组问题

    假设有一个n长度的数组 求数组中最大的非空子数组 即子数组各个元素相加之和最大 思路1 使用分治策略求解 找到数组的中间位置mid 定义两边位置为left right 在A left right 中 要求解的子数组必然是以下三种情况之一 1