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

leetcode hot100刷题日记——7.最大子数组和

在这里插入图片描述

class Solution {
public:int maxSubArray(vector<int>& nums) {//方法一:动态规划//dp[i]表示以i下标结尾的数组的最大子数组和//那么在i=0时,dp[0]=nums[0]//之后要考虑的就是我们要不要把下一个数加进来,如果下一个数加进来会使结果变大那就加进来//但要是下一个数加进来之后,还不如这个数单独大,那我们就舍弃前面的子数组和,直接用单独这个数,即://dp[i]=max(dp[i-1]+nums[i],nums[i])//什么情况下“下一个数加进来之后,还不如这个数单独大”?//dp[i-1]为负数的时候// int n=nums.size();// vector<int>dp(n);// dp[0]=nums[0];// int maxx=nums[0];// for(int i=1;i<n;i++){//     dp[i]=max(dp[i-1],0)+nums[i];//     maxx=max(dp[i],maxx);// }// return maxx;//方法2:前缀和+贪心//最大子数组和=max(所有当前前缀和-最小前缀和)//为什么只需要维护最小前缀和呢?//因为最大子数组和这个问题要看的是连续部分!//你如果求最大前缀和-最小前缀和//那么有可能最大前缀和比最小前缀和短!//eg. 5 4 3 -2 -1 -5//最大前缀和是5+4+3=12//最小前缀和是5+4+3-2-1-5=4//最大前缀和-最小前缀和=8//但是不对啊!实际上最大子数组和是5+4+3=12啊!//所以最小前缀和初始化值为0int n=nums.size();if(n==1)return nums[0];int ans=INT_MIN;int minn=0;int sum=0;for(int i=0;i<n;i++){sum+=nums[i];ans=max(ans,sum-minn);minn=min(minn,sum);}return ans;}
};

时间复杂度:O(N)
空间复杂度:
方法一是O(N)
方法二是O(1)

http://www.lryc.cn/news/2383408.html

相关文章:

  • 基于Spring Boot和Vue的在线考试系统架构设计与实现(源码+论文+部署讲解等)
  • MySQL Workbench 工具导出与导入数据库:实用指南
  • Android 绘制折线图
  • 自建srs实时视频服务器支持RTMP推流和拉流
  • ubuntu22.04 卸载ESP-IDF
  • Spring IOCDI————(2)
  • 80. Java 枚举类 - 使用枚举实现单例模式
  • 融云 uni-app IMKit 上线,1 天集成,多端畅行
  • Java中的集合详解
  • 利用 Java 爬虫根据关键词获取某手商品列表
  • Axure项目实战:智慧运输平台后台管理端-订单管理2(多级交互)
  • 篇章五 项目创建
  • Ntfs!ATTRIBUTE_RECORD_HEADER结构$INDEX_ROOT=0x90的一个例子
  • AGI大模型(30):LangChain链的基本使用
  • 代码随想录算法训练营第六十六天| 图论11—卡码网97. 小明逛公园,127. 骑士的攻击
  • [创业之路-364]:企业战略管理案例分析-5-战略制定-宇树科技的使命、愿景、价值观的演变过程
  • React--函数组件和类组件
  • Flask 路由装饰器:从 URL 到视图函数的优雅映射
  • DDoS防护实战——从基础配置到高防IP部署
  • aws平台s3存储桶夸域问题处理
  • HOT100(二叉树)
  • 【vue-text-highlight】在vue2的使用教程
  • pycharm无法正常调试问题
  • springboot3.4.5-springsecurity+session
  • 网络安全利器:蜜罐技术详解
  • Leetcode百题斩-哈希
  • MySQL替换瀚高数据库报错: TO_DAYS()不存在(APP)
  • EXIST与JOIN连表比较
  • 【Linux】利用多路转接epoll机制、ET模式,基于Reactor设计模式实现
  • 【jvm第7集】jvm调优工具(命令行工具)