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

LeetCode——最大子数组和(中等)

题目

给你一个整数数组 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

我的思路

受到上一题和为K的子数组的启发,我先确定子数组的结尾,然后往前遍历求和,然后Math.max求最大值,结果超出时间限制

/*** @param {number[]} nums* @return {number}*/
var maxSubArray = function(nums) {var len = nums.length;var maxsum=nums[0];for(var start = 0;start<len;start++){let sum =0;for(var end = start;end>=0;end--){sum = sum + nums[end];maxsum = Math.max(maxsum,sum);}}return maxsum;
};

题解

forEach是for循环的写法,遍历数组的元素

如果前边累加后还不如自己本身大,那就把前边的都扔掉,从此自己本身重新开始累加。

很巧妙的写法

var maxSubArray = function(nums) {let pre = 0, maxAns = nums[0];nums.forEach((x) => {pre = Math.max(pre + x, x);maxAns = Math.max(maxAns, pre);});return maxAns;
};

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

相关文章:

  • Zookeeper集成SpringBoot
  • ModaHub魔搭社区:星环科技致力于打造更优越的向量数据库
  • Dubbo默认使用什么序列化框架?还有哪些?
  • 攻防世界-What-is-this
  • [C++]构造与毁灭:深入探讨C++中四种构造函数与析构函数
  • 【跟小嘉学 Rust 编程】二十一、网络编程
  • 一文了解聚合支付
  • 118.杨辉三角
  • 第7节——渲染列表+Key作用
  • NTP服务器时间配置
  • vulhub之MinIO信息泄露漏洞(CVE-2023-28432)
  • C语言:递归思想及实例详解
  • 好题分享0
  • python的asyncio事件循环
  • QT day1登录界面设计
  • (一)KITTI数据集用于3D目标检测
  • 手写Promise完整介绍
  • 【kubernetes系列】Calico原理及配置
  • RabbitMQ 的快速使用
  • VUE3添加全局变量
  • JavaScript基础语法01——初识JavaScript
  • 家宽用户家庭网的主要质量问题是什么?原因有哪些
  • ZooKeeper的典型应用场景及实现
  • 智能安全帽~生命体征检测与危险气体检测一体化集成设计还是蓝牙无线外挂式方式好?
  • 【Java并发】聊聊对象内存布局和syn锁升级过程
  • 【档案专题】八、电子档案鉴定与销毁
  • 进程与子进程
  • 如何对MySQL和MariaDB中的查询和表进行优化-提升查询效率
  • 【Android】关于binder_calls_stats服务
  • 给前端返回http链接,由于浏览器缓存不能获取到最新资源怎么办?