数组

发表时间:2021.3.3

题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值,要求时间复杂度为O(n)。

源代码:

public class Item { 

    public static void main(String args[]) { 

 

       int array[] = {1, 6, 10, -4,8,3, -5}; 

       System.out.println(findMax(array));

 

    } 

 

    public static int findMax(int array[]){

 

        if (array.length == 0) {

            return 0;

        }

 

        int max = array[0];

        int sum = 0;

 

        for(int i=0; i<array.length; i++){ 

          

            if(sum >= 0) {

                sum += array[i]; 

            }

            else{ 

                sum = array[i];

            }

            if(sum > max){ 

                max = sum; 

            }

        } 

        return max; 

    }

}

posted @ 2021-03-03 19:28  derek&cosmo  阅读(36)  评论(0)    收藏  举报