zoukankan      html  css  js  c++  java
  • 力扣(LeetCode)试题53-最大子序和 C++代码

    刚看到这个题,想了半天没有思路,看到题解的贪心算法,顿时恍然大悟。

    直接放代码吧

    如果当前和为负,并且下个元素比当前和大,则放弃前面的元素,重新将下个元素置为当前和

     1 #include <iostream>
     2 #include <vector>
     3 
     4 using namespace std;
     5 //若当前和为负,则舍弃前边的数组,
     6 class Solution {
     7 public:
     8     int maxSubArray(vector<int>& nums) {
     9         if (nums.size() == 0) return 0;
    10         else
    11         {
    12             if (nums.size() == 1) return nums[0];        
    13             else
    14             {
    15                 int cur_sum = nums[0];//将数组第一个值,作为当前和与最大和
    16                 int max_sum = nums[0];
    17                 for (int i = 1; i < nums.size(); i++)
    18                 {
    19                     if ( (cur_sum <= 0) && (cur_sum<nums[i]) )//如果当前和小于0,并且小于下一个元素,则下个元素重置为当前和
    20                     {
    21                         cur_sum = nums[i];
    22                     }
    23                     else cur_sum += nums[i];
    24                     if (cur_sum>max_sum)
    25                         max_sum = cur_sum;
    26                 }
    27                 return max_sum;
    28             }
    29             
    30         }
    31     }
    32 };
    33 
    34 int main()
    35 {
    36     Solution sol;
    37     int max_sum;
    38     vector<int> nums{ -2, 1, -3, 4, -1, 2, 1, -5, 4 };
    39     max_sum = sol.maxSubArray(nums);
    40     cout << max_sum << endl;
    41 
    42     int u;
    43     cin >> u;
    44     return 0;
    45 }

  • 相关阅读:
    antd Upload的使用
    table 的使用方法
    标题前点的制作
    插件multiBtnList的使用
    render的写法
    数据请求
    实体类为什么使用包装类
    el-table中如何遍历数组中对象里的数组?
    关于hash的描述,hashcode etc
    Java集合框架详解
  • 原文地址:https://www.cnblogs.com/pgzhanglin/p/13269106.html
Copyright © 2011-2022 走看看