最大子数组和(java)-创新互联
53. 大子数组和 - 力扣(Leetcode)
站在用户的角度思考问题,与客户深入沟通,找到吉木乃网站设计与吉木乃网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站制作、做网站、企业官网、英文网站、手机端网站、网站推广、域名申请、网站空间、企业邮箱。业务覆盖吉木乃地区。此题是典型的动态规划算法
class Solution {
public int maxSubArray(int[] nums) {
//最终输出的大值
int maxSum = nums[0];
for (int i = 1; i< nums.length; ++i) {
//改变后一个nums值,此值为前面大值+此值的和,循环过来时,nums[i-1]的值就是前面所有最优值的和,每次都与0比较,说明如果前面的和计算出来有负值,就抛弃前面的数,从当前位置开始计算。
nums[i] = Math.max(nums[i - 1], 0) + nums[i];
//再将当前最优的和与上一次的maxsum比较,取大
maxSum = Math.max(maxSum, nums[i]);
}
return maxSum;
}
}
最重要的一行
nums[i] = Math.max(nums[i - 1], 0) + nums[i];
意为,将前面的值一个一个加起来,如果出现相加完后是负值的情况,那在下一次循环到这里时直接舍弃,以0为大值加上nums[i]作为和,然后继续计算。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
文章题目:最大子数组和(java)-创新互联
分享链接:http://azwzsj.com/article/dpgghe.html