LeetCode 解题思路 45(分割等和子集、最长有效括号)

在这里插入图片描述

解题思路:

  1. dp 数组的含义: 在数组中是否存在一个子集,其和为 i。
  2. 递推公式: dp[i] |= dp[i - num]。
  3. dp 数组初始化: dp[0] = true。
  4. 遍历顺序: 从大到小去遍历,从 i = target 开始,直到 i = num。确保每个数只用一次。
  5. 打印 dp 数组

Java代码:

class Solution {public boolean canPartition(int[] nums) {int sum = 0;for (int num : nums)sum += num;if (sum % 2 != 0)return false;int target = sum / 2;boolean[] dp = new boolean[target + 1];dp[0] = true;for (int num : nums) {for (int i = target; i >= num; i--) {dp[i] |= dp[i - num];}}return dp[target];}
}

复杂度分析:

  • 时间复杂度: O(n * target)。
  • 空间复杂度: O(target)。
    在这里插入图片描述

解题思路:

可以使用栈来解决这个问题。核心思想是利用栈来跟踪未匹配的括号的索引。初始化时,栈中压入一个基准索引 -1,用于后续计算有效子串的长度。遍历字符串时:

  • 遇到左括号 ‘(’,将其索引压入栈中。
  • 遇到右括号 ‘)’,弹出栈顶元素。此时:
  • 若栈为空,说明当前右括号无匹配,将当前索引压入栈作为新基准。
  • 若栈不为空,当前有效子串长度为当前索引与栈顶元素的差值,更新最大值。

此方法确保每次弹出栈顶后,栈顶元素即为最近未匹配的左括号或基准点,从而快速计算有效长度。

Java代码:

public class Solution {public int longestValidParentheses(String s) {Deque<Integer> stack = new ArrayDeque<>();stack.push(-1);int maxLen = 0;for (int i = 0; i < s.length(); i++) {char c = s.charAt(i);if (c == '(') {stack.push(i);} else {stack.pop();if (stack.isEmpty()) {stack.push(i);} else {maxLen = Math.max(maxLen, i - stack.peek());}}}return maxLen;}
}

复杂度分析:

  • 时间复杂度: O(n)。
  • 空间复杂度: O(n)。

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

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

相关文章

电影感户外哑光人像自拍摄影Lr调色预设,手机滤镜PS+Lightroom预设下载!

调色详情 电影感户外哑光人像自拍摄影 Lr 调色&#xff0c;是借助 Lightroom 软件&#xff0c;针对户外环境下拍摄的人像自拍进行后期处理。旨在模拟电影画面的氛围与质感&#xff0c;通过调色赋予照片独特的艺术气息。强调打造哑光效果&#xff0c;使画面色彩不过于浓烈刺眼&a…

使用 NV‑Ingest、Unstructured 和 Elasticsearch 处理非结构化数据

作者&#xff1a;来自 Elastic Ajay Krishnan Gopalan 了解如何使用 NV-Ingest、Unstructured Platform 和 Elasticsearch 为 RAG 应用构建可扩展的非结构化文档数据管道。 Elasticsearch 原生集成了行业领先的生成式 AI 工具和提供商。查看我们的网络研讨会&#xff0c;了解如…

Android 13 使能user版本进recovery

在 debug 版本上&#xff0c;可以在关机状态下&#xff0c;同时按 电源键 和 音量加键 进 recovery 。 user 版本上不行。 参考 使用 build 变体 debug 版本和 user 版本的差别之一就是 ro.debuggable 属性不同。 顺着这个思路追踪&#xff0c;找到 bootable/recovery/reco…

每日算法刷题计划

这是我每天坚持刷算法题的仓库&#xff0c;每天刷1-3道&#xff0c;时间30-40min&#xff0c;加油! 目前考虑leetcode洛谷形式&#xff0c;c和python3语言&#xff0c;leetcode主要学核心思想&#xff0c;洛谷学会输入输出格式 每日打卡:markdowncsdn打卡 刷题策略: 按分类刷…

红黑树():

1. 红黑树&#xff1a; 红黑树从根节点开始的最长的路径不会超过最短路径的2倍。 红黑树的话&#xff0c;他的结点的分布没有我们的AVL树的结点的分布均衡&#xff0c;但是效率也不错&#xff0c;AVL树的结点分布的那么均匀&#xff0c;其实也是在进行了旋转&#xff0c;付出了…

【AI智能推荐系统】第六篇:隐私保护与联邦学习在推荐系统中的平衡之道

第六篇:隐私保护与联邦学习在推荐系统中的平衡之道 提示语:🔥 “数据不出域,推荐更精准!深度揭秘腾讯、蚂蚁集团如何用联邦学习打造合规推荐系统,隐私计算技术全景解析与工业级实现方案!” 目录 隐私保护的行业挑战隐私计算技术体系 2.1 联邦学习基础架构2.2 差分隐私…

【Qt/C++】深入理解 Lambda 表达式与 `mutable` 关键字的使用

【Qt/C】深入理解 Lambda 表达式与 mutable 关键字的使用 在 Qt 开发中&#xff0c;我们常常会用到 lambda 表达式来编写简洁的槽函数。今天通过一个实际代码示例&#xff0c;详细讲解 lambda 的语法、变量捕获方式&#xff0c;特别是 mutable 的作用。 示例代码 QPushButto…

记录 ubuntu 安装中文语言出现 software database is broken

搜索出来的结果是 sudo apt-get install language-pack-zh-han* 然而,无效,最后手动安装如下 apt install language-pack-zh-hans apt install language-pack-zh-hans-base apt install language-pack-gnome-zh-hans apt install fonts-arphic-uming apt install libreoffic…

[虚幻官方教程学习笔记]深入理解实时渲染(An In-Depth Look at Real-Time Rendering)

原英文教程地址深入理解实时渲染&#xff08;An In-Depth Look at Real-Time Rendering&#xff09; 文章目录 1.Intro to An In-Depth Look at Real-Time RenderingCPU VS GPUDeferred VS Forward 2. Before Rendering and OcclusionCulling计算的步骤使用console command:fre…

Linux进程间信号

目录 信号入门 生活角度中的信号 技术应用角度的信号 信号的发送与记录 信号处理常见方式概述 产生信号 通过终端按键产生 通过系统函数向进程发信号 由软件条件产生信号 由硬件异常产生信号 阻塞信号 信号其他相关常见概念 在内核中的表示 sigset_t 信号集操作…

Git简介和发展

Git 简介 Git是一个开源的分布式版本控制系统&#xff0c;跨平台&#xff0c;支持Windows、Linux、MacOS。主要是用于项目的版本管理&#xff0c;是由林纳斯托瓦兹(Linux Torvalds)在2005年为Linux内核开发而创建。 起因 在2002年至2005年间&#xff0c;Linux内核开发团队使…

Perspective,数据可视化的超级引擎!

Perspective 是一个强大的交互式数据分析和可视化库&#xff0c;它允许你创建高度可配置的报告、仪表板、笔记本和应用程序。给用户提供了一个新的视角来看待数据。 Stars 数9125Forks 数1217 主要特点 高效流式查询引擎&#xff1a;Perspective使用C编写&#xff0c;并编译为…

MySQL COUNT(*) 查询优化详解!

目录 前言1. COUNT(*) 为什么慢&#xff1f;—— InnoDB 的“计数烦恼” &#x1f914;2. MySQL 执行 COUNT(*) 的方式 (InnoDB)3. COUNT(*) 优化策略&#xff1a;快&#xff01;准&#xff01;狠&#xff01;策略一&#xff1a;利用索引优化带 WHERE 子句的 COUNT(*) (最常见且…

如何在postman使用时间戳

1. 使用 Pre-request Script 动态转换​ 在发送请求前&#xff0c;将日期字符串转为时间戳并存储为环境变量/全局变量。 ​示例代码​ // 将日期字符串&#xff08;如 "2023-10-01"&#xff09;转为时间戳&#xff08;毫秒&#xff09; const dateString "2…

嵌入式学习笔记 - 运算放大器的共模抑制比

一 定义 共模抑制比&#xff08;Common Mode Rejection Ratio, ‌CMRR‌&#xff09;是衡量差分放大器&#xff08;或差分电路&#xff09;抑制共模信号能力的关键指标。它在电子工程中尤为重要&#xff0c;特别是在需要处理微弱信号或对抗环境噪声的场景中。 核心概念 ‌共…

成龙电影中的三菱汽车

帕杰罗、 Lancer Evolution、 3000GT Mitsubishi Lancer Evo ll 1995 附录 Mercedes-Benz 280SL&#xff08;W113&#xff09;&#xff0c;俗称“Pagoda”&#xff08;帕格达&#xff09;

Spring 项目无法连接 MySQL:Nacos 配置误区排查与解决

在开发过程中&#xff0c;我们使用 Nacos 来管理 Spring Boot 项目的配置&#xff0c;其中包括数据库连接配置。然而&#xff0c;在实际操作中&#xff0c;由于一些概念的混淆&#xff0c;我们遇到了一些连接问题。本文将分享我的故障排查过程&#xff0c;帮助大家避免类似的错…

LabVIEW与 IMAQ Vision 机器视觉应用

在工业生产及诸多领域&#xff0c;精确高效的检测至关重要。基于 LabVIEW 与 IMAQ Vision 的机器视觉应用&#xff0c;深入剖析其原理、系统构成、软件设计及优势&#xff0c;为相关领域工程师提供全面技术参考。 ​ 一、技术原理 &#xff08;一&#xff09;机器视觉技术基础…

【STM32 学习笔记】USART串口

注意&#xff1a;在串口助手的接收模式中有文本模式和HEX模式两种模式&#xff0c;那么它们有什么区别&#xff1f;   文本模式和Hex模式是两种不同的文件编辑或浏览模式&#xff0c;不是完全相同的概念。文本模式通常是指以ASCII编码格式表示文本文件的编辑或浏览模式。在文…

【WPS】怎么解决“word的复制表格”粘贴到“excel的单元格”变多行单元格的问题

把 word文档复制表格到这个excel表格上面的话&#xff0c;会出现由单个单元格变成多行单元格的情况。 现在&#xff0c;就这个问题怎么解决&#xff0c;提出了一个方案&#xff0c;就是先查找是什么导致了这个换行&#xff0c;然后再将换行的这个字符进行一个整体的替换&#x…