剑指offer-31连续子数组最大和
来源:互联网 发布:关于我的命运知乎 编辑:程序博客网 时间:2024/05/29 19:17
题目:输入一个整形数组,数组里有正数也有负数。数组中一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。
可以用动态规划来解决这个问题,用函数f(i)表示以第i个整数结尾的子数组的最大和,当以第i-1个整数结尾的子数组的最大和小于0时,此时以第i个整数结尾的子数组的最大和即为它自身,当以第i-1个整数结尾的子数组的最大和大于0时,以第i个整数结尾的子数组的最大和为第i个整数加上以第i-1个整数结尾的子数组的最大和即可。用一个临时数组存下每个以第i个整数结尾的子数组的最大和,再从这个临时数组中找出最大值即整形数组的子数组的最大值。
代码如下:
class Solution {public: int FindGreatestSumOfSubArray(vector<int> array) { int size = array.size(); if(size==0) return 0; if(size==1) return array[0]; int tmp[size]; tmp[0]=array[0]; for(int i=1; i<size; ++i) { if(tmp[i-1]<=0) tmp[i]=array[i]; else tmp[i]=array[i]+tmp[i-1]; } int max=tmp[0]; for(int j=1; j<size; ++j) { if(max<tmp[j]) max=tmp[j]; } return max; }};
0 0
- [剑指offer]连续子数组最大和
- 剑指offer-最大连续子数组和
- 剑指offer:连续子数组最大和
- 剑指offer---连续子数组最大和
- 【剑指offer】连续子数组最大和
- 剑指offer:31-连续子数组的最大和
- 剑指offer-31:连续子数组的最大和
- 剑指offer 31 - 连续子数组的最大和
- 剑指Offer-31-连续子数组的最大和
- 剑指offer-31连续子数组最大和
- 剑指offer--31连续子数组最大和
- 剑指offer-31:连续子数组的最大和
- 剑指offer 31 连续子数组的最大和
- 【剑指offer】最大连续连续子数组
- 剑指Offer之连续子数组的最大和
- 【剑指offer】连续子数组的最大和
- 【一些题】剑指offer:连续子数组最大和
- 剑指offer--连续子数组的最大和
- 微信扫码支付 php代码
- DatePicker和TimePicker的简单使用
- [Leetcode]69. Sqrt(x)
- java匿名内部类
- ServletContext作用功能详解
- 剑指offer-31连续子数组最大和
- 【一天一道LeetCode】#84. Largest Rectangle in Histogram
- Android drawable基本概念
- 视频中的 时钟类
- 数据库——sql(二)
- eclipse如何新建java项目
- Unable to add window -- token null is not for an application错误
- iOS开发笔记(二)
- linux 同时跑多个tomcat