【leetcode】动态规划

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

题目:

给定一个长度为 n环形整数数组 nums ,返回 nums 的非空 子数组 的最大可能和

环形数组 意味着数组的末端将会与开头相连呈环状。形式上, nums[i] 的下一个元素是 nums[(i + 1) % n]nums[i] 的前一个元素是 nums[(i - 1 + n) % n]

子数组 最多只能包含固定缓冲区 nums 中的每个元素一次。形式上,对于子数组 nums[i], nums[i + 1], ..., nums[j] ,不存在 i <= k1, k2 <= j 其中 k1 % n == k2 % n

题目链接

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

文字分析

 代码

class Solution {
public:
    int maxSubarraySumCircular(vector<int>& nums) 
    {
        int sum = 0;
        int n = nums.size();
        vector<int>dp1(n);
        vector<int>dp2(n);
        int Max , Min;
        Max = Min = sum = dp2[0] = dp1[0] = nums[0];
        for(int i = 1;i < n;i++)
        {
            dp1[i] = max(dp1[i - 1] + nums[i],nums[i]);
            dp2[i] = min(dp2[i - 1] + nums[i],nums[i]);
            Max = max(Max,dp1[i]);
            Min = min(Min,dp2[i]);
            sum += nums[i];
        }
        if(Min == sum)
        {
            return Max;
        }
        return Max > sum - Min ? Max : sum - Min;
    }
};

20. 152 乘积最大子数组

题目:

给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续 子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。

测试用例的答案是一个 32-位 整数。

题目链接

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

文字分析

 代码

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

21. 1567 . 乘积为正数的最长子数长度

题目:

给你一个整数数组 nums ,请你求出乘积为正数的最长子数组的长度。

一个数组的子数组是由原数组中零个或者更多个连续数字组成的数组。

请你返回乘积为正数的最长子数组长度。

题目链接

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

文字分析

 

代码

class Solution {
public:
    int getMaxLen(vector<int>& nums) 
    {
            int n = nums.size();
            vector<int> f(n);
            vector<int> g(n);
            if(nums[0] > 0)
            {
                f[0] = 1;
                g[0] = 0;
            }
            else if(nums[0] < 0)
            {
                f[0] = 0;
                g[0] = 1;
            }
            else
            {
                f[0] = g[0] = 0;
            }
            int Max = f[0];
            for(int i = 1;i < n;i++)
            {
                if(nums[i] > 0)
                {
                    f[i] = f[i - 1] + 1;
                    if(g[i - 1] != 0)
                    {
                        g[i] = g[i - 1] + 1;
                    }
                    else
                    {
                        g[i] = 0;
                    }
                }
                else if(nums[i] < 0)
                {
                    if(g[i - 1] != 0)
                    {
                        f[i] = g[i - 1] + 1;
                    }
                    else
                    {
                        f[i] = 0;
                    }
                    g[i] = f[i - 1] + 1;
                }
                else
                {
                    f[i] = g[i] = 0;
                }
                Max = max(Max,f[i]);
            }
            return Max;
    }
};

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《2024中国泛娱乐出海洞察报告》解析,垂直且多元化方向发展!

随着以“社交”为代表的全球泛娱乐市场规模不断扩大以及用户需求不断细化&#xff0c;中国泛娱乐出海产品正朝着更加垂直化、多元化的方向发展。基于此&#xff0c;《2024中国泛娱乐出海洞察报告》深入剖析了中国泛娱乐行业出海进程以及各细分赛道出海现状及核心特征。针对中国…

Python游戏开发超详细第二课/一个小游戏等制作过程(入门级篇共2节)

直播内容&#xff0c;这里都用大多用照片代替了哈&#xff0c;因为在写一遍很累&#xff0c;哥哥姐姐理解一下抱歉抱歉 一个是我懒的写一遍&#xff0c;但是刚学的兄弟姐妹可不许学我偷懒哈 二防止有人偷懒&#xff0c;直接复制粘贴代码&#xff0c;所以为了方便帮助你们学习&a…

【AIGC】ChatGPT应用之道:如何打破`专家`幻象,提升AI协作质量

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;ChatGPT的实际能力用户对ChatGPT的常见误解超越误解&#xff0c;合理设定期望总结 &#x1f4af;超越“专家”幻想设定合理的期望总结 &#x1f4af;提升人工智能协作质量…

寻找大自然的颜色

走在停停&#xff0c;停停走走&#xff0c;恍惚间一天过去了&#xff0c;转瞬间一年过去了&#xff0c;身边的一切在变化又不在变化&#xff0c;生活是自己的又不是自己的。 今天是个特殊的日子&#xff0c;其实前几天对我而言就算特殊的日子了&#xff0c;一个心里暗暗等待着却…

python之数据结构与算法(数据结构篇)-- 集合

一、集合的概念 所谓的编程中的”集合“&#xff0c;其实和高中数学中集合是一样的的。比如&#xff1a;羊村和狼堡看作一个集合&#xff0c;而狼堡中的"灰太狼"、"红太狼"、"小灰灰"则可看作狼堡中的元素&#xff0c;同理&#xff0c;羊村中的…

通过火山云API来实现:流式大模型语音对话

这里我们需要在火山云语音控制台开通大模型的流式语音对话、获取豆包模型的apiKey&#xff0c;开通语音合成项目。 这里使用的豆包模型是Doubao-lite&#xff0c;延迟会更低一些配置说明 这里一共有四个文件&#xff0c;分别是主要的fastAPI、LLM、STT、文件 TTS中需要配置 ap…

洛谷 U411986 数的范围(二分模板)

题意&#xff1a;在一个有序序列里面找某个值的初始出现下标和最后出现下标&#xff0c;如果该值不存在&#xff0c;输出-1 -1。 整数二分模板题&#xff0c;该题主要用来练习如何写两种情况下的二分函数的代码模板。 1&#xff09;upper_bound函数&#xff1a;用来寻找边界点A…

鸿蒙是必经之路

少了大嘴的发布会&#xff0c;老实讲有点让人昏昏入睡。关于技术本身的东西&#xff0c;放在后面。 我想想来加把油~ 鸿蒙发布后褒贬不一&#xff0c;其中很多人不太看好鸿蒙&#xff0c;一方面是开源性、一方面是南向北向的利益问题。 不说技术的领先点&#xff0c;我只扯扯…

香橙派5(RK3588)使用npu加速yolov5推理的部署过程

香橙派5使用npu加速yolov5推理的部署过程 硬件环境 部署过程 模型训练(x86主机) 在带nvidia显卡(最好)的主机上进行yolo的配置与训练, 获取最终的best.pt模型文件, 详见另一篇文档 模型转换(x86主机) 下载airockchip提供的yolov5(从pt到onnx) 一定要下这个版本的yolov5, …

【力扣 + 牛客 | SQL题 | 每日三题】大厂笔试真题W1,W4

1. 力扣603&#xff1a;连续空余的座位 1.1 题目&#xff1a; 表: Cinema ------------------- | Column Name | Type | ------------------- | seat_id | int | | free | bool | ------------------- Seat_id 是该表的自动递增主键列。 在 PostgreSQL 中&#…

练习LabVIEW第十九题

学习目标&#xff1a; 刚学了LabVIEW&#xff0c;在网上找了些题&#xff0c;练习一下LabVIEW&#xff0c;有不对不好不足的地方欢迎指正&#xff01; 第十九题&#xff1a; 创建一个程序把另外一个VI的前面板显示在Picture控件中 开始编写&#xff1a; 在前面板放置一个二…

C语言教程——数组(2)

目录 系列文章目录 前言 4、数组作为函数参数 4.1冒泡函数的错误设计 4.2数组名是什么&#xff1f; 总结 前言 我们知道一维数组是连续存放的&#xff0c;随着数组下标的增长&#xff0c;地址是由低到高依次存放的&#xff0c;二维数组&#xff0c;也是在内存里面是连续存放的…

Linux | 配置docker环境时yum一直出错的解决方法

yum出错 Centos 7版本出错问题补充&#xff1a;什么是yumyum 和 apt 有什么区别&#xff1f; Centos 7版本 [rootlocalhost yum.repos.d]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)出错问题 问题1 Could not retrieve mirrorlist http://mirrorlist.ce…

SQLite 3.47.0 发布,大量新功能来袭

SQLite 开发团队于 2024 年 10 月 21 日发布了 SQLite 3.47.0 版本&#xff0c;我们来了解一下新版本的改进功能。 触发器增强 SQLite 3.47.0 版本开始&#xff0c;触发器函数 RAISE() 的 error-message 参数可以支持任意 SQL 表达式。在此之前&#xff0c;该参数只能是字符串…

论1+2+3+4+... = -1/12 的不同算法

我们熟知自然数全加和&#xff0c; 推导过程如下&#xff0c; 这个解法并不难&#xff0c;非常容易看懂&#xff0c;但是并不容易真正理解。正负交错和无穷项计算&#xff0c;只需要保持方程的形态&#xff0c;就可以“预知”结果。但是这到底说的是什么意思&#xff1f;比如和…

Nodejs使用pkg打包为可执行文件

安装pkg npm install -g pkg查看pkg命令 pkg --help修改package.json 新增bin入口配置 {"name": "takescreenshot","version": "1.0.0","bin": "app.js", // 新增bin入口配置"scripts": {"t…

day10:ssh服务-跳板机

一&#xff0c;ssh服务概述 ssh服务概述 ssh&#xff08;Secure Shell&#xff09;是一种用于在不安全网络中进行安全登录、远程执行命令及传输文件的网络协议。它通过加密技术来保证通信的保密性和完整性&#xff0c;主要用于替代不安全的telnet、rlogin、rsh等协议。ssh通常…

计算机视觉-边缘检测实验报告

实验一 边缘检测实验 一、实验目的 1&#xff0e;理解并掌握 Sobel 算子和 Canny 算子的基本原理和应用。 2&#xff0e;学习如何在图像处理中使用这两种算子进行边缘检测。 3&#xff0e;比较 Sobel 算子和 Canny 算子的性能&#xff0c;了解各自的优缺点。 4&#xff0…

【mysql进阶】4-3. 页结构

页面结构 ⻚在MySQL运⾏的过程中起到了⾮常重要的作⽤&#xff0c;为了能发挥更好的性能&#xff0c;可以结合⾃⼰系统的业务场景和数据⼤⼩&#xff0c;对⻚相关的系统变量进⾏调整&#xff0c;⻚的⼤⼩就是⼀个⾮常重要的调整项。同时关于⻚的结构也要有所了解&#xff0c;以…