leetcode53.最大子序和(遍历标记)

package newleedcode;

/**
* 最大子序和
* 判断一段连续数组里之和的最大值
*/
public class LeedCode53 {
public int maxSum(int[] num){
//给最大值赋初始值
int ans=num[0];
//动态数
int sum=0;
//自动遍历,当动态数组小于0时即重置下标,更新新的连续数组,并将每一次结果进行比较,每次比较都将最大值存于ans
for(int nums:num){
//数值大于零时可加
if(sum>0){
sum+=nums;
//数值小于零时重置连续数组位置
}else {
sum=nums;
}
//判断当前动态数组是否比最大值大,大即更新,不大即维持原连续数组【每次都录入当前连续数组最大值】
ans=Math.max(ans,sum);
}
return ans;
}

public static void main(String args[]){
int[] num={1,5,-3,6,8,-9};
LeedCode53 leetCode53=new LeedCode53();
System.out.println(leetCode53.maxSum(num));
}
}

/**
* leetcode提交代码
* class Solution {
* public int maxSubArray(int[] nums) {
* //给最大值赋初始值
* int ans=nums[0];
* //动态数
* int sum=0;
* //自动遍历,当动态数组小于0时即重置下标,更新新的连续数组,并将每一次结果进行比较,每次比较都将最大值存于ans
* for(int num:nums){
* //数值大于零时可加
* if(sum>0){
* sum+=num;
* //数值小于零时重置连续数组位置
* }else {
* sum=num;
* }
* //判断当前动态数组是否比最大值大,大即更新,不大即维持原连续数组【每次都录入当前连续数组最大值】
* ans=Math.max(ans,sum);
* }
* return ans;
* }
* }
*/
原文地址:https://www.cnblogs.com/shudaixiongbokeyuan/p/13592396.html