C++算法第十五天

复习周终于结束了,这也是复习周结束后的第一篇文章,请各位小伙伴们细细品尝,废话不多说,我们开始今天的讲解。

第一题

题目链接

918. 环形子数组的最大和 - 力扣(LeetCode)

题目解析

代码原理

注意:g[i - 1]与先前讲的dp[i - 1]是一样的,即到i-1位置的最小子数组和

代码编写

class Solution {

public:

    int maxSubarraySumCircular(vector<int>& nums) {

        int n = nums.size();

        //建表

        vector<int> f(n + 1);

        auto g = f;

        //初始化

        f[0] = -0x3f3f3f3f,g[0] = 0x3f3f3f3f;

        //填表

        int sum = 0, fmax = -0x3f3f3f3f,gmin = 0x3f3f3f3f;

        for(int i = 1; i <= n; i++)

        {

           f[i] = max(f[i - 1] + nums[i - 1], nums[i - 1]);

           fmax = max(fmax, f[i]);

           g[i] = min(g[i - 1] + nums[i - 1], nums[i - 1]);

           gmin = min(g[i], gmin);

           sum += nums[i - 1];

        }

        return sum == gmin? fmax:max(fmax,sum - gmin);

    }

};

第二题

题目链接

152. 乘积最大子数组 - 力扣(LeetCode)

题目解析

代码原理

代码编写

class Solution {

public:

    int maxProduct(vector<int>& nums) {

        int n = nums.size();

        //建表

        vector<int>f(n + 1);

        auto g = f;

        //初始化

        f[0] = g[0] = 1;

        int ret = -0x3f3f3f3f;

        //填表

        for(int i = 1; i <= n; i++)

        {

            f[i] = max(max(nums[i - 1], nums[i - 1] * f[i - 1]), nums[i - 1] * g[i - 1]);

            g[i] = min(min(nums[i - 1], nums[i - 1] * f[i - 1]), nums[i - 1] * g[i - 1]);

            ret = max(f[i], ret);

        }

        return ret;

    }

};

第三题

题目链接

1567. 乘积为正数的最长子数组长度 - 力扣(LeetCode)

题目解析

代码原理

代码编写

class Solution {

public:

    int getMaxLen(vector<int>& nums) {

        int n = nums.size();

        //建表

        vector<int> f(n + 1);

        auto g = f;

        //初始化

        g[0] = f[0] = 0;

        int res = -0x3f3f3f3f;

        for(int i = 1; i <= n; i++)

        {

            if(nums[i - 1] > 0)

            {

                f[i] = f[i - 1] + 1;

                g[i] = g[i - 1] == 0? 0: g[i - 1] + 1;

            }

            else if(nums[i - 1] < 0)

            {

                g[i] = f[i - 1] + 1;

                f[i] = g[i - 1] == 0? 0: g[i - 1] + 1;

            }

           res = max(res, f[i]);

        }

        return res;

    }

};

那么本题的难点就是最后的那一部分,博主在这里也是出了点小事故,那么这题看似复杂其实自己画图+思考后也可以理解。

那么这题有没有其他方法呢?当然是有的,那么预知后事如何,且听博主下回分析。

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

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

相关文章

mysql-5.7.18保姆级详细安装教程

本文主要讲解如何安装mysql-5.7.18数据库&#xff1a; 将绿色版安装包mysql-5.7.18-winx64解压后目录中内容如下图&#xff0c;该例是安装在D盘根目录。 在mysql安装目录中新建my.ini文件&#xff0c;文件内容及各配置项内容如下图&#xff0c;需要先将配置项【skip-grant-tab…

<OS 有关>Ubuntu 24 安装 openssh-server, tailscale+ssh 慢增加

更新日志&#xff1a; Created on 14Jan.2025 by Dave , added openssh-server, tailescape Updated on 15Jan.2025, added "tailescape - tailscape ssh" 前期准备&#xff1a; 1. 更新可用软件包的数据库 2. 升级系统中所有已安装的软件包到最新版本 3. 安装 cur…

STM32-keil安装时遇到的一些问题以及解决方案

前言&#xff1a; 本人项目需要使用到STM32,故需配置keil 5&#xff0c;在配置时遇到了以下问题&#xff0c;并找到相应的解决方案&#xff0c;希望能够为遇到相同问题的道友提供一些解决思路 1、提示缺少&#xff08;missing&#xff09;version 5编译器 step1&#xff1a;找…

HTTP1.0/1.1/2.0/3.0 的区别?

HTTP&#xff08;Hypertext Transfer Protocol&#xff09;是用于传输超文本的协议。各版本的主要区别体现在性能优化、数据传输方式以及支持的功能上。 每一次协议的更新都是对旧协议的改进&#xff1a; 1. HTTP1.0 发布于1996年 无连接&#xff08;Connectionless&#…

蓝桥杯_B组_省赛_2022(用作博主自己学习)

题目链接算法11.九进制转十进制 - 蓝桥云课 进制转换 21.顺子日期 - 蓝桥云课 时间与日期 31.刷题统计 - 蓝桥云课 时间与日期 41.修剪灌木 - 蓝桥云课 思维 51.X 进制减法 - 蓝桥云课 贪心 61.统计子矩阵 - 蓝桥云课 二维前缀和 71.积木画 - 蓝桥云课 动态规划 82.扫雷 - 蓝桥…

C++|CRC校验总结

参考&#xff1a; Vector - CAPL - CRC算法介绍 开发工具 > CRC校验工具 文章目录 简介CRC-8CRC-16CRC-32 简介 循环冗余校验&#xff08;Cyclic Redundancy Check&#xff0c;简称CRC&#xff09;是一种数据校验算法&#xff0c;广泛用于检测数据传输或存储过程中的错误。…

迅翼SwiftWing | ROS 固定翼开源仿真平台正式发布!

经过前期内测调试&#xff0c;ROS固定翼开源仿真平台今日正式上线&#xff01;现平台除适配PX4ROS环境外&#xff0c;也已实现APROS环境下的单机飞行控制仿真适配。欢迎大家通过文末链接查看项目地址以及具体使用手册。 1 平台简介 ROS固定翼仿真平台旨在实现固定翼无人机决策…

C语言数据结构与算法(排序)详细版

大家好&#xff0c;欢迎来到“干货”小仓库&#xff01;&#xff01; 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;无人扶我青云志&#xff0c;我自踏雪至山巅&#xff01;&#xff01;&am…

微信小程序获取openid

2025年1月15日&#xff1a; 注意&#xff1a;其中appid,secret&#xff0c;还有服务器网址都按自己实际的填写 1、先在云服务器上安装nodejs&#xff0c;然后写个get接口&#xff1a; const express require(express); const app express();app.get(/getOpenid,(req,res)&…

C语言:-三子棋游戏代码:分支-循环-数组-函数集合

思路分析&#xff1a; 1、写菜单 2、菜单之后进入游戏的操作 3、写函数 实现游戏 3.1、初始化棋盘函数&#xff0c;使数组元素都为空格 3.2、打印棋盘 棋盘的大概样子 3.3、玩家出棋 3.3.1、限制玩家要下的坐标位置 3.3.2、判断玩家要下的位置是否由棋子 3.4、电脑出棋 3.4.1、…

FPGA工程师成长四阶段

朋友&#xff0c;你有入行三年、五年、十年的职业规划吗&#xff1f;你知道你所做的岗位未来该如何成长吗&#xff1f; FPGA行业的发展近几年是蓬勃发展&#xff0c;有越来越多的人才想要或已经踏进了FPGA行业的大门。很多同学在入行FPGA之前&#xff0c;都会抱着满腹对职业发…

vscode的安装与使用

下载 地址&#xff1a;https://code.visualstudio.com/ 安装 修改安装路径&#xff08;不要有中文&#xff09; 点击下一步&#xff0c;创建桌面快捷方式&#xff0c;等待安装 安装中文插件 可以根据自己的需要安装python和Jupyter插件

懒饭 3.0.2 | 谷歌版纯净无广告教做菜软件

这款教做菜的软件是谷歌版&#xff0c;提供了一个纯净无广告的学习环境。即使没有会员&#xff0c;普通版也足够满足日常使用需求。软件内含分类和排行榜功能&#xff0c;支持搜索&#xff0c;教程形式多样&#xff0c;包括文字和视频&#xff0c;是学习烹饪技巧、追女朋友的好…

【数模学习笔记】插值算法和拟合算法

声明&#xff1a;以下笔记中的图片以及内容 均整理自“数学建模学习交流”清风老师的课程资料&#xff0c;仅用作学习交流使用 文章目录 插值算法定义三个类型插值举例插值多项式分段插值三角插值 一般插值多项式原理拉格朗日插值法龙格现象分段线性插值 牛顿插值法 Hermite埃尔…

计算机二级-Java系列(Java的特点)

java语言的特点 简单&#xff0c;面向对象&#xff0c;分布式&#xff0c;结构中立&#xff0c;可移植性&#xff0c;解释执行&#xff0c;健壮&#xff0c;安全&#xff0c;高性能&#xff0c;多线程和动态。 Java具有面向对象的三个基本特性为&#xff1a;封装&#xff0c;…

【Vue3 入门到实战】1. 创建Vue3工程

目录 ​编辑 1. 学习目标 2. 环境准备与初始化 3. 项目文件结构 4. 写一个简单的效果 5. 总结 1. 学习目标 (1) 掌握如何创建vue3项目。 (2) 了解项目中的文件的作用。 (3) 编辑App.vue文件&#xff0c;并写一个简单的效果。 2. 环境准备与初始化 (1) 安装 Node.js 和 …

vim使用指南

&#x1f3dd;️专栏&#xff1a;计算机操作系统 &#x1f305;主页&#xff1a;猫咪-9527-CSDN博客 “欲穷千里目&#xff0c;更上一层楼。会当凌绝顶&#xff0c;一览众山小。” 目录 一、Vim 的基本概念 1.Vim 的主要模式&#xff1a; 1.1普通模式 (Normal Mode) 1.2插入…

TCP-IP详解卷 TCP的超时与重传

TCP-IP详解卷1-21&#xff1a;TCP的超时与重传&#xff08;Timeout and Retransmission&#xff09; 一&#xff1a;介绍 1&#xff1a; 与数据链路层的ARQ协议相类似&#xff0c;TCP使用超时重发的重传机制。 即&#xff1a;TCP每发送一个报文段&#xff0c;就对此报文段设置…

卷积神经02-CUDA+Pytorch环境安装

卷积神经02-CUDAPytorch环境安装 在使用Python进行pytorch的使用过程中遇到各种各样的版本冲突问题&#xff0c;在此进行记录 0-核心知识脉络 1&#xff09;根据自己电脑的CUDA版本安装对应版本的Pytorch&#xff0c;充分的使用GPU性能2&#xff09;电脑要先安装【CUDA ToolKi…

【STM32-学习笔记-7-】USART串口通信

文章目录 USART串口通信Ⅰ、硬件电路Ⅱ、常见的电平标准Ⅲ、串口参数及时序Ⅳ、STM32的USART简介数据帧起始位侦测数据采样波特率发生器 Ⅴ、USART函数介绍Ⅵ、USART_InitTypeDef结构体参数1、USART_BaudRate2、USART_WordLength3、USART_StopBits4、USART_Parity5、USART_Mode…