当前位置: 首页 > article >正文

【力扣hot100题】(012)最大子数组和

一开始想的是使用滑动窗口,将所有截至到某个元素之前的和求一遍之后再倒过来减去前面截至至某个元素之前的和,选取最大的,不出所料超时了。

看了一下以前的解法,然后想到了一种新的思路:设置一个最小元素和设置一个最大元素和,最小元素和是每次求前面所有元素和的时候保留最小的那个值,最大元素和是结果,每次判断截止到这个元素之前所有元素和减去最小的元素和。(应该是贪心)

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int minpost=min(0,nums[0]);
        int result=nums[0];
        int sum=nums[0];
        for(int i=1;i<nums.size();i++){
            sum+=nums[i];
            result=max(result,sum-minpost);
            minpost=min(sum,minpost);
        }
        return result;
    }
};

之前的解法也很巧妙,不知道是看评论区哪个大佬写出来的,也是每次求一下截至目前所有元素的和,如果遍历到的这个元素比前面所有元素和都大就舍去前面的元素,只取最大的这个,然后每次和result比较。

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int t=0;
        int maxx=nums[0];
        for(int i=0;i<nums.size();i++){
            t=max(nums[i],t+nums[i]);
            maxx=max(maxx,t);
        }
        return maxx;
    }
};


http://www.kler.cn/a/616361.html

相关文章:

  • 力扣刷题1049. 最后一块石头的重量 II
  • No spring.config.import property has been defined
  • 改bug制造bug...
  • 我的编程之旅:从零到无限可能
  • git did not exit cleanly (exit code 128)处理方法
  • el-radio-group 中 el-radio-button value未能绑定上数值数据
  • 02 相机标定相关坐标系
  • 页码设置相关问题记录
  • 还款测试案例需要考虑的维度
  • [操作系统,学习记录] 2.进程(1)
  • AnimateCC基础教学:随机抽取获奖名单及奖品-V1.0原型版
  • 利用Claude desktop配置MCP server(第一课)
  • 【软考备考】系统架构案例分析示例(一)
  • 从ChatGPT到AutoGPT——AI Agent的范式迁移
  • c++ vs和g++下的string结构
  • 虚拟现实--->unity学习
  • 21 python __name__ 与 __main__
  • 基于大语言模型的智能音乐创作系统——从推荐到生成
  • 知能行每日刷题
  • Acwing6118 蛋糕游戏