​LeetCode解法汇总1186. 删除一次得到子数组最大和

news2024/12/22 14:07:30

 目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣


描述:

给你一个整数数组,返回它的某个 非空 子数组(连续元素)在执行一次可选的删除操作后,所能得到的最大元素总和。换句话说,你可以从原数组中选出一个子数组,并可以决定要不要从中删除一个元素(只能删一次哦),(删除后)子数组中至少应当有一个元素,然后该子数组(剩下)的元素总和是所有子数组之中最大的。

注意,删除一个元素后,子数组 不能为空

示例 1:

输入:arr = [1,-2,0,3]
输出:4
解释:我们可以选出 [1, -2, 0, 3],然后删掉 -2,这样得到 [1, 0, 3],和最大。

示例 2:

输入:arr = [1,-2,-2,3]
输出:3
解释:我们直接选出 [3],这就是最大和。

示例 3:

输入:arr = [-1,-1,-1,-1]
输出:-1
解释:最后得到的子数组不能为空,所以我们不能选择 [-1] 并从中删去 -1 来得到 0。
     我们应该直接选择 [-1],或者选择 [-1, -1] 再从中删去一个 -1。

提示:

  • 1 <= arr.length <= 105
  • -104 <= arr[i] <= 104

解题思路:

* 解题思路:

* 这题看题解的。核心就是动态规划:

* 分别构造两个数组,

* 数组1:一个都不减时,最大的连续数组之和

* 数组2:减1个时,最大的连续数组之和

 

代码:

class Solution1186
{
public:
    int maximumSum(vector<int> &arr)
    {
        int length = arr.size();
        // 不删时,最大连续和
        vector<int> prefixSum0(length + 1);
        // 删1个时,最大连续和
        vector<int> prefixSum1(length + 1);
        prefixSum0[0] = arr[0];
        prefixSum1[0] = 0;
        int abs = prefixSum0[0];
        for (int i = 1; i < length; i++)
        {
            prefixSum0[i] = prefixSum0[i - 1] <= 0 ? arr[i] : prefixSum0[i - 1] + arr[i];
            prefixSum1[i] = prefixSum0[i - 1] > prefixSum1[i - 1] + arr[i] ? prefixSum0[i - 1] : prefixSum1[i - 1] + arr[i];
            int max = prefixSum0[i] > prefixSum1[i] ? prefixSum0[i] : prefixSum1[i];
            abs = max > abs ? max : abs;
        }
        return abs;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/708983.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为OD机试真题 Python 实现【静态代码扫描服务】【2023Q1 100分】

目录 一、题目描述二、输入描述三、输出描述四、解题思路五、Python算法源码六、效果展示1、输入2、输出 一、题目描述 静态扫描快速识别源代码的缺陷&#xff0c;静态扫描的结果以扫描报告作为输出&#xff1a; 文件扫描的成本和文件大小相关&#xff0c;如果文件大小为N&am…

echarts折线图背景空白太大

1、没有调间距的效果&#xff1a; 2、更改间距后的效果&#xff1a; 3、其实只要更改grid定位值就行了&#xff0c;上代码&#xff1a; grid: {top: 20px,left: 20px,right: 20px,bottom: 20px,containLabel: true},4、将代码copy到option里面就行了

【中间件】Ngnix入门

文章目录 下载地址相关概念*反向代理&#xff1a;*负载均衡&#xff1a;轮询权重轮询iphash*动静分离 文件解释/conf/nginx.conf 基本使用双击运行&#xff08;不建议&#xff09;使用命令行 常用命令&#xff08;Linux下&#xff09; 下载地址 Nginx官网下载页 相关概念 *反…

IMX8QXP SPI CS片选连续传输模式

问题背景 在开发项目中&#xff0c;换了一个spi安全芯片&#xff0c;发现不能进行通信&#xff0c;查看spi信号波形&#xff0c;时钟&#xff0c;发送数据&#xff0c;片选都是正常的&#xff0c;但没有回复数据。安全芯片技术正常通过查看CS片选波形信号&#xff0c;提出CS片选…

Appium: Windows系统桌面应用自动化测试(一)

Appium: Windows系统桌面应用自动化测试 一、方案调研二、环境搭建1、WinAppDriver环境搭建&#xff08;1&#xff09;开启开发者选项中的“开发人员模式”&#xff08;2&#xff09;windows sdk下载安装&#xff08;3&#xff09;WinAppDriver下载安装 2、appium环境搭建&…

2018年全国硕士研究生入学统一考试管理类专业学位联考逻辑试题——纯享题目版

&#x1f3e0;个人主页&#xff1a;fo安方的博客✨ &#x1f482;个人简历&#xff1a;大家好&#xff0c;我是fo安方&#xff0c;考取过HCIE Cloud Computing、CCIE Security、CISP等证书。&#x1f433; &#x1f495;兴趣爱好&#xff1a;b站天天刷&#xff0c;题目常常看&a…

第十二章 原理篇:vision transformer

参考教程&#xff1a; https://arxiv.org/pdf/2010.11929.pdf https://zhuanlan.zhihu.com/p/340149804 【大佬总结的非常好&#xff0c;他的好多篇文章都很值得学习】 文章目录 为什么会使用transformerVIT详解method获得patchpatch embeddingposition embedding 代码实现eino…

数据结构--队列的顺序实现

数据结构–队列的顺序实现 队列的顺序存储代码定义 #define MaxSize 10 //定义队列中元素最大个数 typedef struct {ElemType data[MaxSize]; //静态数组存放队列元素int front, rear; //对头指针 & 队尾指针 } SqQueue; 初始化操作 void InitQueue(SqQueue &Q) {Q.r…

第九十三天学习记录:C++核心:类和对象Ⅱ(五星重要)

对象的初始化和清理 构造函数和析构函数 对象的初始化和清理也是两个非常重要的安全问题 一个对象或者变量没有初始化状态&#xff0c;对其使用后果是未知 同样的使用完一个对象或变量&#xff0c;没有及时清理&#xff0c;也会造成一定的安全问题 c利用了构造函数和析构函数…

搜索封装+crud+重点细节优化

新建GSearchQuery.vue <template> <el-row :span"24><el-input type"text" v-model"query"></el-input><slot></slot> </el-row> </template>data() {return{query: }}index.vue 引入组件 <GSe…

每周学点数学 1:数学建模计划篇

用GPT3.5生成了一段数学建模学习的计划&#xff0c;我准备在视觉学习的同时&#xff0c;穿插一些数学理论方面的学习&#xff0c;以下是近三个月的计划。 7月2日-7月8日&#xff1a;了解数学建模的基本概念和方法&#xff0c;阅读相关教材和论文&#xff0c;了解数学建模的应…

【如何用大语言模型快速深度学习系列】开篇+文本匹配系列

开篇 很久没有更新啦&#xff01;这个系列其实是自己的一个学习笔记啦&#xff01;这个系列的特色就是我们不再通过看视频的方式入门深度学习。 开篇的时候&#xff08;2023.07.01&#xff09;&#xff0c;我想的是围绕自然语言处理的一些基础方法&#xff08;代码方面&#…

带你用Python制作一个经典小游戏:扫雷

名字&#xff1a;阿玥的小东东 学习&#xff1a;Python、C/C 主页链接&#xff1a;阿玥的小东东的博客_CSDN博客-python&&c高级知识,过年必备,C/C知识讲解领域博主 目录 游戏界面尺寸 方块尺寸 雷的数量 游戏状态 最后&#xff0c;我们定义一个函数run()&#xff…

软件项目成本的计算

在《架构思维的六要素》中&#xff0c;列出的第一个要素就是成本&#xff0c;成本对项目设计和决策起着至关重要的作用。今天咱们就来看看直接成本、间接成本和总成本的关系。 直接成本 工作于服务的开发者工作于系统测试的测试者设计数据库的DBA设计界面和致力于优化用户体验的…

ROS学习篇之远程控制(七)-局域网内的控制

文章目录 一.pc与pc端二.手机与pc端&#xff08;1&#xff09;pc端&#xff1a;**步骤1&#xff1a;** 运行 roscore**步骤2&#xff1a;** 新开一个终端运行&#xff0c;运行 rosrun turtlesim turtlesim_node **步骤3&#xff1a;** 新建一个终端查看ip&#xff0c;运行ifcon…

基于matlab根据特征进行全景图像拼接(附源码)

一、前言 此示例演示如何使用基于特征的图像配准技术自动创建全景图。 特征检测和匹配是许多计算机视觉应用&#xff08;如图像配准、跟踪和对象检测&#xff09;中使用的强大技术。在此示例中&#xff0c;基于特征的技术用于自动拼接一组图像。图像拼接过程是基于特征的图像…

火车头采集:高效数据采集工具的介绍

火车头采集是一款基于Python语言开发的网络爬虫工具&#xff0c;用于快速高效地从互联网上采集数据并存储到本地或远程数据库。它简单易用且功能强大&#xff0c;在各行各业广泛应用。 1、设置chatgpt自定义key 添加网站 通过关键词批量生成原创文章 设置发布网站 发布成功 相…

Python GUI编程利器:Tkinker中的文本输入框和下拉菜单(4)

小朋友们好&#xff0c;大朋友们好&#xff01; 我是猫妹&#xff0c;一名爱上Python编程的小学生。 和猫妹学Python&#xff0c;一起趣味学编程。 今日目标 实现下面效果&#xff1a; 文本输入框(Entry类) 文本输入框&#xff0c;顾名思义&#xff0c;就是实现文本输入功能…

dnsServer搭建

一、dokcer安装 #下载文件&#xff1a;https://github.com/TechnitiumSoftware/DnsServer/blob/master/docker-compose.yml #另存到/root/docker-compose.yml cd /root docker-compose -f docker-compose.yml up -d #启动成功后&#xff0c;浏览器输入&#xff1a;http://192…

Airtest:Windows桌面应用自动化测试【AirtestIDE功能】

AirtestIDE功能 基础功能一、设备窗二、Airtest辅助窗三、Poco辅助窗3.1UI树常见问题&#xff1a;3.1.1为什么我选择了Poco模式后&#xff0c;没有成功刷出UI树3.1.2为什么接入了SDK、使用了原生App依然看不到UI树3.1.3UI树在一段时间后没有正确刷新 四、脚本编辑窗五、Log查看…