使用java实现求最大和非空子数组的问题
1、我们首先描述这个问题的解决思路。基本的思路是采用分治法:对于一个数组A[low...high],将其从中间分为两个部分a[low...mid]与a[mid+1...high]。这样,任何连续子数组必定属于以下三种情况之一:1.完全位于左侧数组;2.完全位于右侧数组;3.跨越了中间元素的数组。


4、下面我们使用java语言实现以上的算法。首先,由于以上两个函数返回值均为多个值,但数据类型均为整型,因此返回值为List<Integer>,将返回值完全封装在里面。首先求出mid左侧的最大值,实现方法如下。

6、然后使用递归策略,反复调用该方法,每调用一个,数组的长度减半,直到每一个数组只剩下一个元素时,递归开始回溯。

8、输出结果如下,与实际的最大值相同。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:68
阅读量:62
阅读量:76
阅读量:25
阅读量:70