概述
最大子数组和
题目
:
给你一个整数数组 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
C
思路
:
贪心
算法:局部最优解
max存放当前求和最大值,sum存放求和值,遍历数组,如果sum求和值小于0,直接丢弃当前元素到下一个元素,如果求和值大于max,重新给max赋值为sum
代码
:
int maxSubArray(int* nums, int numsSize){
//贪心算法
//局部最优解
//1.遍历数组
//2.max sum 如果sum大于0保留 sum<0丢弃
int i;
//初始化sum和为0
int sum = 0;
//初始化max为最小
int max = INT_MIN;
for(i=0; i<numsSize; i++){
sum += nums[i];
if(sum > max){
//如果sum和大于max 重新赋值max
max = sum;
}
if(sum < 0){
//如果sum值小于0 丢弃
sum = 0;
}
}
return max;
}
JS
思路
如上一样
注意:js中数值的最小用 -Number.MAX_VALUE表示
代码
/**
* @param {number[]} nums
* @return {number}
*/
var maxSubArray = function(nums) {
//初始化max
let max = -Number.MAX_VALUE
//初始化sum
let sum = 0
//遍历
nums.forEach((items) => {
sum += items
if(sum > max){
max = sum
}
if(sum < 0){
sum = 0
}
})
return max
};
最后
以上就是爱笑百褶裙为你收集整理的力扣-- 最大子数组和的全部内容,希望文章能够帮你解决力扣-- 最大子数组和所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复