一个数组子数组求最大值
一维数组问题
一、求连续的元素的子数组最大值。
首先,问题的要求是:
       输入一个整形数组,数组里有正数也有负数。
       数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
       求所有子数组的和的最大值。要求时间复杂度为O(n)。
我写的代码如下:
然后我说一下我的思路,当时上课的时候虽然这个很简单,但是我还是没有想出来。
1.因为是要求所有子数组的情况,所以有都为负数的情况以及其它情况,都为负数的情况就需要单独对比,找出负数里面的最大值。连续的情况就需要一个个相加来对比。
2.因为是第一阶段,所以代码也是比较简单,思路就是创建一个动态数组,然后创建一个用来储存临时最大值的变量lsmax以及最终结果的最大值的变量max,首先判断是否只有一个变量,是的话就是直接输出最大值。然后当超过一个变量的时候就可以判断前两个数的和是否小于0,小于0的话就可以直接舍弃不要了,从当前变量从新来选。最后如果临时最大值大于最终结果,就把临时最大值赋值给最终结果,输出即可。
                    
                

                
            
        
浙公网安备 33010602011771号