Leetcode 53) Maximum Subarray

image

class Solution {
    public int maxSubArray(int[] nums) {
        int i=0;
        int sum=0;
        int max= Integer.MIN_VALUE;
        while(i<nums.length){
            sum+=nums[i];
            //음수만 있는 어레이일때도 해결 가능.
            if(max<sum){
                max=sum;}
            if(sum<0){
                sum=0;
            }
            i++;
        }
        return max;
    }
}

다른 답안

  • 아 내 답안이랑 비슷한데, 나는 음수들로만 이뤄진 어레이 값들 처리를 따로 해줬는데, 순서를 이렇게 하면 굳이 그렇게 따로 처리해주지 않아도 된다.
class Solution {
    public int maxSubArray(int[] nums) {
        int windowSum=0;
        int max=Integer.MIN_VALUE;
        for(int windowEnd=0;windowEnd<nums.length;windowEnd++)
        {
            windowSum+=nums[windowEnd];
            
            if(windowSum>max)
            {
                max=windowSum;
            }
            if(windowSum<0)
            {
                windowSum=0;
            }
        }
        return max;
    }
}

© 2018. All rights reserved.

Powered by Hydejack v8.5.2