zoukankan      html  css  js  c++  java
  • LeetCode 53. Maximum Subarray最大子序和 (C++)

    题目:

    Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.

    Example:

    Input: [-2,1,-3,4,-1,2,1,-5,4],
    Output: 6
    Explanation: [4,-1,2,1] has the largest sum = 6.
    

    Follow up:

    If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle.

    分析:

    给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

    我们可以将返回的结果设为INT_MIN,设一个tempsum用来记录当前和,遍历数组,将元素添加进当前和,如果当前和大于返回结果,就将返回结果更新成当前和,如果当前和小于0,我们就将当前和重置为0,因为如果当前和是负数的话,对于找最大和是没有帮助的,可以认为这段是无用的,可以舍弃。

    程序:

    class Solution {
    public:
        int maxSubArray(vector<int>& nums) {
            int res = INT_MIN;
            int tempSum = 0;
            for(auto i:nums){
                tempSum += i;
                if(tempSum > res) res = tempSum;
                if(tempSum < 0) tempSum = 0;
            }
            return res;
        }
    };
  • 相关阅读:
    sqlserver2005转换到2000
    vs2008的注册
    给联想K46装系统
    两个调片技巧
    mapx集合的问题
    audio player播放多文件
    JQuery查询ul嵌套结构中当前所处的位置
    .Net中使用带UI的OCX的方法
    U盘启动和量产
    winrar的图标
  • 原文地址:https://www.cnblogs.com/silentteller/p/10847420.html
Copyright © 2011-2022 走看看