402. 连续子数组求和

描述:给定一个整数数组,请找出一个连续子数组,使得该子数组的和最大。输出答案时,请分别返回第一个数字和最后一个数字的下标。(如果存在多个答案,请返回字典序最小的)
思路:ans 记录最大值,sum表示lefg,right间数组和,遍历数组,若sum < 0,则更新left,right值,否则只把right位置更新。然后sum,ans值比较,更新ans值和left,right值

class Solution {
public:
    /*
     * @param A: An integer array
     * @return: A list of integers includes the index of the first number and the index of the last number
     */
    vector<int> continuousSubarraySum(vector<int> &A) {
        // write your code here
        int ans = INT_MIN;
        int sum = 0;
        int left = 0;
        int right = 0;
        vector<int> ints(2,0);
        //ans 记录最大值,sum表示lefg,right间数组和,遍历数组,若sum < 0,则更新left,right值,否则只把right位置更新。
        //然后sum,ans值比较,更新ans值和left,right值
        for( int i = 0; i < A.size(); ++i )
        {
            if( sum < 0 )
            {
                sum = A[i];
                left = right = i;
            }
            else
            {
                sum += A[i];
                right = i;
            }
            if( sum > ans )
            {
                ans = sum;
                ints[0] = left;
                ints[1] = right;
            }
 
        }
        return ints;
    }
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,859评论 2 9
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,413评论 0 2
  • 动态规划 111. 爬楼梯思路类似斐波那契数列注意考虑第 0 阶的特殊情况 272. 爬楼梯 II思路类似上题,只...
    6默默Welsh阅读 2,456评论 0 1
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,315评论 0 3
  • 二分查找是在每次匹配后,将查找的空间一分为二的算法,二分查找应该是有序的数组进行查找. 二分查找模板 1. 模板一...
    Tim在路上阅读 1,164评论 0 0