个人网页制作素材图片,湖南seo博客seo交流,wordpress最简易主题,办公室装修公司哪家好题目
给你一个整数数组 nums #xff0c;请你找出一个具有最大和的连续子数组#xff08;子数组最少包含一个元素#xff09;#xff0c;返回其最大和。
子数组 是数组中的一个连续部分。 示例 1#xff1a; 输入#xff1a;nums [-2,1,-3,4,-1,2,1,-5,4]
输出#x…题目
给你一个整数数组 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 maxsumnums[0];for(var start 0;startlen;start){let sum 0;for(var end start;end0;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;
};