面试题31:连续数组的最大和
来源:互联网 发布:iherb靠谱吗 知乎 编辑:程序博客网 时间:2024/05/16 17:00
解法一:
/*算法时间复杂度O(n)用total记录累计值,maxSum记录和最大基于思想:对于一个数A,若是A的左边累计数非负,那么加上A能使得值不小于A,认为累计值对 整体和是有贡献的。如果前几项累计值负数,则认为有害于总和,total记录当前值。此时 若和大于maxSum 则用maxSum记录下来*/public class Solution { public int FindGreatestSumOfSubArray(int[] array) { if(array.length==0) return 0; else{ int total=array[0],maxSum=array[0]; for(int i=1;i<array.length;i++){ if(total>=0) total+=array[i]; else total=array[i]; if(total>maxSum) maxSum=total; } return maxSum; } }}
解法二:
//动态规划publicclassSolution { publicintFindGreatestSumOfSubArray(int[] array) { if(array.length==0) return0; int temp=array[0],maxSum=array[0];//注意初始值 不能设为0 防止只有负数 for(inti=1;i<array.length;i++){//从1开始 因为0的情况在初始化时完成了 tempuSum=(tempSum<0)?array[i]:tempSum+array[i]; sum=(tempSum>sum)?tempSum:sum; } return sum; } }
阅读全文
0 0
- 面试题31:连续子数组的最大和
- 面试题31:连续子数组的最大和
- 连续子数组的最大和(面试题 31)
- 面试题31 连续子数组的最大和
- 面试题31:连续子数组最大的和
- 面试题31:连续子数组的最大和
- 面试题31连续数组的最大和
- 面试题31:连续子数组的最大和
- 面试题31:连续子数组的最大和
- 面试题31:连续子数组的最大和(java)
- 面试题31:连续子数组的最大和
- 面试题31 连续子数组的最大和
- 面试题31:连续子数组的最大和
- 面试题31:连续子数组的最大和(java)
- 面试题31:连续子数组的最大和
- 面试题31:连续子数组的最大和
- 面试题31连续子数组的最大和
- 面试题31:连续数组的最大和
- 比特币钱包地址生成算法
- Excel VBA高效办公应用-第十六章-VBA高效文件操作(使用级联菜单管理多个工作簿)
- 分支预测器设计
- 【HTML】- CSS清除浮动
- 欢迎使用CSDN-markdown编辑器
- 面试题31:连续数组的最大和
- Myeclipse使用link方法集成SVN
- string成员函数
- js中继承的理解
- ETH挖矿初尝
- pull镜像的过程
- LeetCode-169. Majority Element (Java)
- 喷泉装置2
- display:table-cell布局