程序设计思想:
思路:
因为时间复杂度为O(n),则只能遍历一次数组这里同时使用两个变量sum和max,其中sum保存的是当前的和,若sum<0则从下一个位置从新记录,max记录的是历史的最大值只有当sum>max时用sum替换max。出现的问题:
在初始化max和sum的值时,把max初始化成了0,sum的值初始化成了数组的而第一个元素的值。
可能的解决方法:
应该把max的值初始化成数组的第一个元素的值,把sum的值初始化成0;
源代码:
public class IntArrayMax { public static void MaxIntArray(int[] intArray) { int sum=0; int max=intArray[0]; for(int i=0;i=0){ sum+=intArray[i]; }else{ sum=intArray[i]; } if(sum>max){ max=sum; } } System.out.println("子数组中的最大值:"+max); }}
public class Invoke { public static void main(String[] args) { // TODO 自动生成的方法存根 Random random=new Random(); //int num=random.nextInt(10); int[] intArray=new int[10]; System.out.print("随机数组:"); for(int i=0;i
结果截图:
总结:
编程前应该先分析清楚题的意思,然后想好思路,进行编程。