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

LeetCode 刷题【53. 最大子数组和】

53. 最大子数组和

自己做

解:滑动数组

class Solution {
public:int maxSubArray(vector<int>& nums) {int begin = 0;int end = (int)nums.size() - 1;int sum = 0;int max = nums[0];//剔除左边小于0的部分int left_count = 0;for(int i = 0; i < (int)nums.size(); i++){left_count += nums[i];if(left_count > max)   //记录下前面的最大值,可能会出现前面全为正,后面一个很大负数的情况,这样就会造成丢失,这里记录下来max = left_count;if(left_count < 0){         //找到了负值的部分,更新边界begin = i + 1;left_count = 0;         //重置计数}}//剔除右边小于0的部分int right_count = 0;for(int i = (int)nums.size() - 1; i > begin; i--){right_count += nums[i];if(right_count < 0){         //找到了负值的部分,更新边界end = i - 1;right_count = 0;         //重置计数}}//情况:如果数组中的元素全是负的(或者相加都为负,或者前面的最大子数组和都比后面找到的大),这里返回其中的最大值if(begin >= end || max > sum)return max;//经过上面处理后得到对应子数组,现在遍历子数组统计for(int i = begin; i <= end; i++)sum += nums[i];return sum;}
};

http://www.dtcms.com/a/352405.html

相关文章:

  • 一篇文章拆解Java主流垃圾回收器及其调优方法。
  • 详解 torch.distributed.all_gather_into_tensor
  • 15.examples\01-Micropython-Basics\demo_yield_task.py 加强版
  • 【实时Linux实战系列】基于实时Linux的生物识别系统
  • #Linux内存管理学以致用# 请你根据linux 内核struct page 结构体的双字对齐的设计思想,设计一个类似的结构体
  • 【测试需求分析】-需求来源分析(一)
  • 博士招生 | 香港大学 Intelligent Communication Lab 招收全奖博士
  • 【deepseek问答记录】:chatGPT的参数数量和上下文长度有关系吗?
  • AI Agent正在给传统数据仓库下“死亡通知书“
  • 读《精益数据分析》:用户行为热力图
  • 【拍摄学习记录】01-景别
  • 创龙3576ububuntu系统设置静态IP方法
  • 【Linux 进程】进程程序替换详解
  • 8.26网络编程——Modbus TCP
  • Git 高级技巧:利用 Cherry Pick 实现远程仓库的同步合并
  • 【自然语言处理与大模型】微调数据集如何构建
  • docker 的网络
  • shell默认命令替代、fzf
  • RCC_APB2PeriphClockCmd
  • sdi开发说明
  • 推荐系统王树森(三)粗排精排
  • STM32的Sg90舵机
  • Python入门教程之字符串类型
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(20):文法+单词第7回2
  • iPhone 17 Pro 全新配色确定,首款折叠屏 iPhone 将配备 Touch ID 及四颗镜头
  • 【测试需求分析】-需求类型的初步分析(二)
  • 【NuGet】引用nuget包后构建项目简单解析
  • day41-动静分离
  • 数字时代下的智能信息传播引擎
  • 仿真干货|解析Abaqus AMD的兼容与并行效率问题