leetcode 918.环形子数组的最大和

思路:DP

其实和昨天做的哪个重复数组差不多,按顺序来说先做这个题目其实更好。

这里需要分两种情况:第一个,就是数组不越界的时候,这个时候最大子数组和就是leetcode 53题的题解。

如果说越界了,我们还需要注意一点,就是如果你想用链表的方式再加上一个数组,这是不可取的,这里的题目要求直接给你禁止这种耍小聪明的方法了。(同余下标的两个数不能同时取)

所以我们只能想别的办法这里有一点,就是和最小子数组和相联系的一点,就是当我们求出来最小子数组和的时候,剩下的元素不就是最大子数组和了吗?(sum-最小子数组和,sum为总的数组和)你可能会说,啊,这个不是连续的吗?这就是一个技巧问题了,我们可以认为是连续的,因为题目中不就说了吗,是循环的,所以我们越界的时候其实本质上也是连续的。

这样就能解决问题了,最大值就是max(maxs,sum-mins)。

但是还有一种特殊情况,就是当sum==mins也就是最小子数组和就是这个数组本身的和,这里就直接认为是maxs了,为什么?你想,如果是这样的话,那么是不是就不存在最小子数组和了吗?只剩下了最大子数组和了?sum-mins会是0,但是maxs不一定>0,所以我们需要特殊关照一下。

class Solution {
public:int maxSubarraySumCircular(vector<int>& nums) {int n=nums.size();int max_dp=0;int min_dp=0;int maxs=INT_MIN;int mins=INT_MAX;int sum=0;for(int i=0;i<n;i++){max_dp=max(max_dp,0)+nums[i];min_dp=min(min_dp,0)+nums[i];maxs=max(maxs,max_dp);mins=min(min_dp,mins);sum+=nums[i];}return sum==mins?maxs:max(sum-mins,maxs);}
};

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

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

相关文章

Java基础知识(六) 字符串

六 字符串 6.1 String字符串 1、String类对象创建 定义String类对象格式&#xff1a;** 1&#xff09;String 字符串变量名“字符串常量”&#xff1b; 2&#xff09;String 字符串变量名new String(字符串常量); 3&#xff09;String 字符串变量名; 字符串变量名“字符串常…

【STM32HAL库】DAC输出0-3.3v

一、简要介绍一下DAC DAC也有分辨率&#xff0c;转换时间&#xff0c;精度等 分辨率常见为8或12位的 转换时间F1&#xff0c;F4,F7都是3us左右&#xff0c;而H7系列是1.7us 1.DAC框图 2.数据格式&#xff08;对齐方式&#xff09; 3.触发源 4.可以发送DMA请求 注意&#xff…

一次pytorch分布式训练精度调试过程

现象: loss不下降 过程如下: 1.减少层数&#xff0c;准备最小复现环境 2.dropout设置为0&#xff0c;重复运行二次&#xff0c;对比loss是否一致 3.第二次迭代开始loss不一致 4.对比backward之后的梯度,发现某一个梯度不一致 5.dump得到所有算子的规模&#xff0c;单算子测试…

【知识碎片】2024_05_13

本文记录了两道代码题【自除数】和【除自身以外数组的乘积】&#xff08;利用了前缀积和后缀积&#xff0c;值得再看&#xff09;&#xff0c;第二部分记录了关于指针数组和逗号表达式的两道选择题。 每日代码 自除数 . - 力扣&#xff08;LeetCode&#xff09; /*** Note: T…

Ubuntu安装samba软件

目录 Ubuntu安装samba软件 简要介绍 samba软件的安装 samba软件的配置 samba软件的使用 Ubuntu安装samba软件 简要介绍 我们在做嵌入式开发时&#xff0c;大部分的时间都是在写代码或者修改代码&#xff0c;这个过程我们一般是在Windows系统上进行的&#xff0c;在写完代码…

类与对象(二)

封装 封装作为面向对象三大特性&#xff08;封装&#xff0c;继承&#xff0c;多态&#xff09;之一&#xff0c;那如何实现封装性的呢&#xff1f;就又得拿出上面的访问修饰限定符的图 public: 就是在任何地方都可以访问 protected: 涉及子类在介绍继承时详细介绍 default: …

Flutter 中的 SingleChildScrollView 小部件:全面指南

Flutter 中的 SingleChildScrollView 小部件&#xff1a;全面指南 在 Flutter 中&#xff0c;SingleChildScrollView 是一个可以滚动单个子控件的小部件。当子控件的大小超过视图时&#xff0c;用户可以滚动以查看所有内容。SingleChildScrollView 通常用于创建可滚动的表单、…

分类预测 | Matlab实现DBO-CNN-SVM蜣螂算法优化卷积神经网络结合支持向量机多特征分类预测

分类预测 | Matlab实现DBO-CNN-SVM蜣螂算法优化卷积神经网络结合支持向量机多特征分类预测 目录 分类预测 | Matlab实现DBO-CNN-SVM蜣螂算法优化卷积神经网络结合支持向量机多特征分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现DBO-CNN-SVM蜣螂算法…

APP反抓包 - 客户端证书验证进阶(代码混淆)

1.关于混淆 在安卓开发中,对于第三方的包是可以进行混淆的,例如:OKHttp3.Http.Cert.check 被混淆后可以是a.f.c.b 形式。在安卓开发中,系统包是无法混淆的,例如:java.security.KeyStore不会被混淆。由于这种的情况的存在,再次审示我们之前的通用脚本,就会发现他是不通用…

计算机Java项目|Springboot房产销售系统

作者主页&#xff1a;编程指南针 作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容&#xff1a;Java项目、Python项目、前端项目、人工智能与大数据、简…

mybatis-plus(2)

上文我们介绍完mybatis-plus的常用注解&#xff0c;现在介绍 mp的基础的yaml配置 mybatis-plus:type-aliases-package: #该位置写 数据库对应实体类的全路径global-config:db-config:id-type: auto # 全局id类型为自增长 mp同时也是支持手写sql&#xff0c;而且mapper的读取地…

如何用 OceanBase做业务开发——【DBA从入门到实践】第六期

当应用一款新的数据库时&#xff0c;除了基础的安装部署步骤&#xff0c;掌握其应用开发方法才是实现数据库价值的关键。为此&#xff0c;我们特别安排了5月15日&#xff08;周三&#xff09;的《DBA 从入门到实践》第六期课程——本次课程将带大家了解OceanBase数据库的开发流…

【爬虫】爬取股票历史K线数据写入数据库(三)

前几天有写过两篇&#xff1a; 【爬虫】爬取A股数据写入数据库&#xff08;二&#xff09; 【爬虫】爬取A股数据写入数据库&#xff08;一&#xff09; 现在继续完善&#xff0c;分析及爬取股票的历史K线数据通过ORM形式批量写入数据库。 2024/05&#xff0c;本文主要内容如下…

JavaScript数字(Number)个数学(Math)对象

目录 前言&#xff1a; Number&#xff08;数字&#xff09;对象 前言&#xff1a; nfinity(正负无穷大)&#xff1a; NaN&#xff08;非数字&#xff09;&#xff1a; Number的属性 Number的方法 构造函数 静态方法 实例方法 Math&#xff08;数学&#xff09;对象…

【数据结构】详解队列

现在我们来掌握一下队列&#xff01;如果有对往期知识有不足地方&#xff0c;可翻阅之前文章哦&#xff01; 个人主页&#xff1a;小八哥向前冲~-CSDN博客 所属专栏&#xff1a;数据结构【c语言版】_小八哥向前冲~的博客-CSDN博客 栈和队列的实现其实都是对你顺序表和链表的检验…

Dev-C++的下载和安装教程(超详细图文,小白入门)

Dev-C&#xff08;或者叫做Dev-Cpp&#xff09;是Windows环境下的一个轻量级C/C集成开发环境&#xff08;IDE&#xff09;。它是一款自由软件&#xff0c;遵守GPL许可协议分发源代码。 Dev-C集合了功能强大的源码编辑器、MingW64/TDM-GCC编译器、GDB调试器和AStyle格式整理器等…

微信小程序健康生活新篇章:打造专属计步器与健康数据获取功能【附代码】

微信小程序健康生活新篇章&#xff1a;打造专属计步器与健康数据获取功能 一、计步器基础概念与准备工作1.1 计步器是什么&#xff1f;1.2 开发前准备 二、使用微信运动接口获取步数2.1 授权获取步数2.2 获取步数数据 三、实现计步器功能3.1 监听用户步数变化3.2 展示步数 四、…

4.uniapp+vue3项目使用vuex

文章目录 1. uniappvue3项目使用vuex1.1. main.js引入store1.2. 创建store/index.js1.3. 项目中引用1.4. 开始解决实际问题1.5. vuex和storage的区别 1. uniappvue3项目使用vuex 这篇文章&#xff0c;既是使用的教程&#xff0c;也是用来解决一个实际问题&#xff1a;uView自定…

GO语言核心30讲 实战与应用 (WaitGroup和Once,context,Pool,Map,字符编码,string包,bytes包)

原站地址&#xff1a;Go语言核心36讲_Golang_Go语言-极客时间 一、sync.WaitGroup和sync.Once 1. sync.WaitGroup 比通道更加适合实现一对多的 goroutine 协作流程。 2. WaitGroup类型有三个指针方法&#xff1a;Wait、Add和Done&#xff0c;以及内部有一个计数器。 (1) Wa…

代码随想录训练营Day 27|理论基础、力扣 77. 组合

1.理论基础 题目链接/文章讲解&#xff1a;代码随想录 视频讲解&#xff1a;带你学透回溯算法&#xff08;理论篇&#xff09;| 回溯法精讲&#xff01;_哔哩哔哩_bilibili 来自代码随想录的网站&#xff1a; void backtracking(参数) {if (终止条件) {存放结果;return;}for (…