本文主要是介绍【 LeetCode 】53、最大子序和,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
53.1、题目描述
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
53.2、代码实现
var maxSubArray = function (nums) {// 定义总和和最大值let sum = 0, max = nums[0];// 遍历数组for (let num of nums) {// 初始化时 num = -2 // 下一轮循环之后 sum = -2// 因为最后需要返回的是数组元素的求和 所以需要判断 sum + num 与 num 的大小// 就相当于是求 sum = Math.max(sum+num,num)if (sum + num > num) {sum = sum + num} else {sum = num}max = Math.max(max, sum)}return max;};
var nums = [-2, 1, -3, 4, -1, 2, 1, -5, 4];
console.log(maxSubArray(nums)); // 6
// @lc code=end
53.3、代码部分
/*** * arr.forEach(function(currentValue,index,array) , thisArg])* currentValue 元素的值 * index 元素的索引* array 被遍历的数组本身
*/var maxSubArray = function (nums) {// 定义总和和最大值let sum = 0, max = nums[0];// 遍历获得每一个元素nums.forEach(function (num) {// 因为需要返回的是最大总和 所以如果求出前面几个数字的和 // 还需要加上下一位数字计算和sum = Math.max(sum + num, num);max = Math.max(max, sum)})return max;
};
var nums = [-2, 1, -3, 4, -1, 2, 1, -5, 4];
console.log(maxSubArray(nums)); // 6
// @lc code=end
这篇关于【 LeetCode 】53、最大子序和的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!