算法训练|乘积最大数组、最长有效括号

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

总结:解题思路是需要维护一个最大值以及一个最小值,因为最小值如果是负数的话乘上接下来的一个负数会有可能成为最大的数

代码:

class Solution {
public:int maxProduct(vector<int>& nums) {int n = nums.size();if(n == 0){return 0;} else if(n == 1) {return nums[0];}int p = nums[0];int maxP = nums[0];int minP = nums[0];for(int i = 1;i < nums.size();i++){int tmp = maxP;maxP = max(max(nums[i],maxP * nums[i]),minP * nums[i]);minP = min(min(tmp * nums[i],nums[i]),minP * nums[i]);p = max(p ,maxP);}return p;}
};

注意:需要用一个临时变量将覆盖前的最大值存储起来,以供最小值计算的时候使用,因为覆盖前的最大值也可能因为当前的数是一个负数乘上变成最小的。

32. 最长有效括号 - 力扣(LeetCode)

总结:自己一开始的没有考虑清楚如果出现“((()))”这种或者更多对以上括号情况的处理方式。

代码:

class Solution {
public:int longestValidParentheses(string s) {if(s.size() == 1 || s.size() == 0)return 0;vector<int> dp(s.size(),0);int res = 0;for(int i = 1;i < s.size();i++){if(s[i] == ')'){if(s[i - 1] == '('){dp[i] = (i >= 2 ? dp[i - 2] : 0) + 2;}else if((i - dp[i - 1]) > 0 && s[i - dp[i - 1] - 1] == '('){dp[i] = dp[i - 1] + 2 + ((i - dp[i - 1]) >= 2 ? dp[i - dp[i - 1] - 2] : 0);}}if(dp[i] > res)res = dp[i];}return res;}
};

注意:dp[i - 1] + 2 + ((i - dp[i - 1]) >= 2 ? dp[i - dp[i - 1] - 2] : 0);表示在形如'....))'这种情况下表示,倒数第二个括号如果是一个有效子字符串的一部分,且在这部分有效子字符串的前面有一个'('与倒数第一个')'匹配的话,那么此时的dp[i] = dp[i - 1] + 2,而在这个'(’之前可能符合条件的串,所以也加上dp[i - dp[i - 1] - 2]这一部分。

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

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

相关文章

【Vue】3-1、Vue 3 简介

一、Vue 3 的优势 Vue 2 Options API 的缺陷&#xff1a; 一个功能往往需要在不同的 vue 配置项中定义属性和方法&#xff0c;比较分散&#xff0c;需求简单还好&#xff0c;清晰明了&#xff1b;但是需求复杂之后&#xff0c;就会多出 watch&#xff0c;computed&#xff0c;i…

两次NAT

两次NAT即Twice NAT&#xff0c;指源IP和目的IP同时转换&#xff0c;该技术应用于内部网络主机地址与外部网络上主机地址重叠的情况。 如图所示&#xff0c;两次NAT转换的过程如下: 内网Host A要访问地址重叠的外部网络Host B&#xff0c;Host A向位于外部网络的DNS服务器发送…

Android11+ 如何获得外部存储权限

现如今Android版本读取外部目录已经三分天下&#xff1a; Android6.0以下Android6.0-Android11Android11以上 一、在Android6.0以下的版本中&#xff0c;读取外部目录可直接读取new File(Environment.getExternalStorageDirectory().getAbsolutePath()) 二、在Android6.0-An…

力扣面试150 只出现一次的数字Ⅱ 哈希 统计数位 DFA有穷自动机

Problem: 137. 只出现一次的数字 II 文章目录 思路&#x1f496; 哈希&#x1f496; 位数统计&#x1f496; DFA 状态机 思路 &#x1f468;‍&#x1f3eb; 参考 &#x1f496; 哈希 ⏰ 时间复杂度: O ( n ) O(n) O(n) &#x1f30e; 空间复杂度: O ( n ) O(n) O(n) cl…

【EVP】Explicit Visual Prompting for Low-Level Structure Segmentations

目录 &#x1f347;&#x1f347;0.简介 &#x1f337;&#x1f337;1.研究动机 &#x1f34b;&#x1f34b;2.主要贡献 &#x1f353;&#x1f353;3.网络结构 &#x1f36d;3.1整体结构 &#x1f36d;3.2高频分量计算 &#x1f36d;3.3显示视觉提示EVP &#x1f342;&…

【Java八股文面试系列】JVM-内存区域

目录 Java内存区域 运行时数据区域 线程独享区域 程序计数器 Java 虚拟机栈 StackFlowError&OOM 本地方法栈 线程共享区域 堆 GCR-分代回收算法 字符串常量池 方法区 运行时常量池 HotSpot 虚拟机对象探秘 对象的创建 对象的内存布局 句柄 Java内存区域 运…

2024年美赛数学建模F题思路分析 - 减少非法野生动物贸易

# 1 赛题 问题F&#xff1a;减少非法野生动物贸易 非法的野生动物贸易会对我们的环境产生负面影响&#xff0c;并威胁到全球的生物多样性。据估计&#xff0c;它每年涉及高达265亿美元&#xff0c;被认为是全球第四大非法交易。[1]你将开发一个由数据驱动的5年项目&#xff0c…

git命令远程仓库推送本地项目报错了,解决方案

如果你在使用git命令上传本地项目到远程仓库遇到了如下错误&#xff1a; Updates were rejected because the tip of your current branch is behind。n 别慌&#xff0c;肯定是你的远程仓库里面有原始文件&#xff0c;需要你提前进行一下合并操作&#xff0c;然后才能使用pu…

flash芯片最新详解

Flash芯片是一种非易失性存储器&#xff08;Non-Volatile Memory, NVM&#xff09;&#xff0c;也就是说&#xff0c;即使在断电后&#xff0c;存储在其中的数据也不会丢失。其工作原理基于电荷俘获效应&#xff0c;通过控制电压使存储单元的浮动栅极上捕获或释放电荷来实现数据…

[AHOI2008] 紧急集合 / 聚会

[AHOI2008] 紧急集合 / 聚会 题目描述 欢乐岛上有个非常好玩的游戏&#xff0c;叫做“紧急集合”。在岛上分散有 n n n 个等待点&#xff0c;有 n − 1 n-1 n−1 条道路连接着它们&#xff0c;每一条道路都连接某两个等待点&#xff0c;且通过这些道路可以走遍所有的等待点…

离线数仓-数据治理

目录 一、前言 1.1 数据治理概念 1.2 数据治理目标 1.3 数据治理要解决的问题 1.3.1 合规性 元数据合规性 数据质量合规性 数据安全合规性 1.3.2 成本 存储资源成本 计算资源成本 二、数据仓库发展阶段 2.1 初始期 2.2 扩张期 2.3 缓慢发展期 2.4 变革期 三、…

华为机考入门python3--(5)牛客5-进制转换

分类&#xff1a;数字 知识点&#xff1a; 十六进制转int num int(hex_num, 16) int转十六进制 hex_num hex(num) 题目来自【牛客】 hex_num input().strip() dec_num int(hex_num, 16) print(dec_num) by 软件工程小施同学

挖矿系列:细说Python、conda 和 pip 之间的关系

继续挖矿&#xff0c;挖金矿&#xff01; 1. Python、conda 和 pip Python、conda 和 pip 是在现代数据科学和软件开发中常用的工具&#xff0c;它们各自有不同的作用&#xff0c;但相互之间存在密切的关系&#xff1a; Python&#xff1a;是一种解释型、面向对象的高级程序设…

国产UOS操作系统rename用法

Linux系统里面有一个超级好用的rename命令&#xff0c;可以批量修改文件名 使用方法rename 被替换字符串 替换后字符串 哪些文件

redis基本数据结构介绍

Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的高性能键值对数据库&#xff0c;它支持多种数据结构&#xff0c;包括字符串、哈希、列表、集合、有序集合等。这些数据结构为开发者提供了丰富的数据操作方式&#xff0c;使得Redis在缓存、消息队列、排行榜…

为什么越来越多的企业在考虑将ERP从云端迁移到本地?

越来越多的企业在考虑将核心ERP迁移到本地部署&#xff0c;原来实施的时候局限于业务规模、实施成本的原因采用云端部署的方式越来越不再适应于企业规模的发展、系统应用和数据安全的要求。 因此他们都宁愿将云端ERP的数据迁移到本地&#xff0c;使得系统数据和安全更加可控。…

[Linux 进程控制(二)] 写时拷贝 - 进程终止

文章目录 1、写时拷贝2、进程终止2.1 进程退出场景2.1.1 退出码2.1.2 错误码错误码 vs 退出码2.1.3 代码异常终止引入 2.2 进程常见退出方法2.2.1 exit函数2.2.2 _exit函数 本片我们主要来讲进程控制&#xff0c;讲之前我们先把写时拷贝理清&#xff0c;然后再开始讲进程控制。…

QSlider使用笔记

最近做项目使用到QSlider滑动条控件&#xff0c;在使用过的过程中&#xff0c;发现一个问题就是点滑动条上的一个位置&#xff0c;滑块并没有移动到鼠标点击的位置&#xff0c;体验感很差&#xff0c;于是研究了下&#xff0c;让鼠标点击后滑块移动到鼠标点击的位置。 1、event…

node-sass版本与NodeJS版本不匹配的问题

npm install 报错如下 npm ERR! code 1 npm ERR! path D:\Project\git_Product\YYYY\user\node_modules\node-sass npm ERR! command failed npm ERR! command C:\WINDOWS\system32\cmd.exe /d /s /c node scripts/build.js 问题原因 node-sass 与 node 版本不匹配 卸载Node…

【计算机图形学】实验二 用扫描线算法实现多边形填充

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的很重要&…