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

leetcode 1749.任意子数组和的绝对值的最大值

思路:dp

说到绝对值,大家肯定不陌生,但是用在dp上就会使问题变得稍微复杂一些了。

我们在最大子数组和的那道题中知道,在状态转移的时候,我们会舍弃掉为负数的连续部分,重新构建连续的子串。但是,这里不一样,我们并不能轻易舍弃负数的部分,负数也可能让这个子数组和的绝对值变成最大的,例如0,-1000,1,2这个序列就很典型,我们如果按照上一个题那样做,就会使最大值变成3,而不是1000。

这里给出的思路,就是把最大子数组和与最小子数组和之间,两者分别取绝对值,然后比较谁大这个思路,这样就能考虑到最大子数组和中没有考虑到的把负数加进来的讨论了。

这里用了两个dp数组,一个代表最大子数组和,一个代表最小子数组和。

上代码:

class Solution {
public:int maxAbsoluteSum(vector<int>& nums) {vector<int>dp1(nums.size()+1,0);vector<int>dp2(nums.size()+1,0);dp1[0]=nums[0];dp2[0]=nums[0];int ans=max(abs(dp1[0]),abs(dp2[0]));for(int i=1;i<nums.size();i++){if(dp1[i-1]<=0)dp1[i]=nums[i];if(dp2[i-1]<=0)dp2[i]=dp2[i-1]+nums[i];if(dp1[i-1]>0)dp1[i]=nums[i]+dp1[i-1];if(dp2[i-1]>0)dp2[i]=nums[i];ans=max(ans,max(abs(dp1[i]),abs(dp2[i])));}return ans;}
};

http://www.lryc.cn/news/346288.html

相关文章:

  • Linux进程——进程地址空间
  • 基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (三)
  • python3如何安装bs4
  • docker容器技术篇:rancher管理平台部署kubernetes集群
  • 【计算机网络原理】初识网络原理和一些名词解释​​
  • 车载电子电器架构 —— 关于bus off汇总
  • Linux函数
  • 如何查看centos7中Java在哪些路径下
  • 信息安全-古典密码学简介
  • 面试题 01.05. 一次编辑
  • 针对头疼的UDP攻击如何定制有效的防护措施
  • 怎么制作流程图?介绍制作方法
  • 棱镜七彩参编《网络安全技术 软件供应链安全要求》国家标准发布
  • Keepalived实现LVS高可用
  • 【力扣】1089.复写零
  • Golang实践录:gin框架使用自定义日志模块
  • Django之配置数据库
  • Ajax 笔记02
  • 【隧道篇 / WAN优化】(7.4) ❀ 03. WAN优化的原理 ❀ FortiGate 防火墙
  • 网络爬虫概述与原理
  • 可视化实验三 Matplotlib库绘图及时变数据可视化
  • 开启多线程下变量共享与私有问题
  • Qt模型视图代理之QTableView应用的简单介绍
  • 第七届精武杯部分wp
  • 3.2Java全栈开发前端+后端(全栈工程师进阶之路)-前端框架VUE3框架-企业级应用- Vuex
  • 整合 Java, Python 和 Scrapy 爬虫以传递和使用参数
  • Android 蓝牙实战——蓝牙音乐播放进度(二十)
  • SQL注入实例(sqli-labs/less-1)
  • Python中tkinter编程入门3
  • XMind 2023 v23.05.2660软件安装教程(附软件下载地址)