您的位置:首页 > 编程语言 > Java开发

【Leetcode】53. Maximum Subarray

2017-02-25 17:27 281 查看
53. Maximum Subarray

Find the contiguous subarray within an array (containing at least one number) which has the largest sum.

For example, given the array 
[-2,1,-3,4,-1,2,1,-5,4]
,

the contiguous subarray 
[4,-1,2,1]
 has the largest sum = 
6
.

click to show more practice.

Subscribe to see which companies asked this question.
题目简述:
找出数组中的一个最大子串的和
思路简述:
一开始看是easy,结果被难倒了。
参考 Kadane's
algorithm算法
代码:
public class Solution {

    //暴力搜索:超时

    /*

    public int maxSubArray(int[] nums) {

        int maxNum = nums[0];

        //时间复杂度O(N*2)

        int temp=0;

        for(int i=1;i<=nums.length;i++){

            temp=0;

            for(int k=0;k<i;k++){

                 temp += nums[k];

                 if(temp>maxNum){

                    maxNum = temp;

                }

            }

            for(int j=i;j<nums.length;j++){

                temp = temp-nums[j-i]+nums[j];

                if(temp>maxNum){

                    maxNum = temp;

                }

            }

        }

        

        if(temp>maxNum){

            maxNum = temp;

        }

        return maxNum;

    }*/

    public int maxSubArray(int[] nums) {

        int sum=nums[0];

        int maxNum = sum;

        for(int i=1;i<nums.length;i++){

            if(sum > 0){

                sum += nums[i];

            }else{

                sum = nums[i];

            }

            if(sum > maxNum){

                maxNum = sum;

            }

        }

        return maxNum;

    }

}

结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Leetcode java