当前位置: 首页 > backend >正文

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.xdnf.cn/news/4351.html

相关文章:

  • Messenger.Default.Send 所有重载参数说明
  • 星纪魅族新品发布会定档5月13日,Note 16系列战神归来
  • 【5G通信】天线调整
  • 笔记系统的价值
  • 【C++】基础语法
  • 微调大模型如何准备数据集——常用数据集,Alpaca和ShareGPT
  • 学习groovy知识点总结
  • TCP数据报
  • B2134 质数的和与积
  • 新品发布 | 用于诊断开发的多通道MC800车辆通信卡
  • 油价查询开发指南:多源校验+成本预测模型(含等保二级合规方案)
  • 【HarmonyOS 5】鸿蒙发展历程
  • STM32F4 PWM 配置程序
  • 426、N叉树的层序遍历
  • var、let、const三者之间的区别和使用
  • WiFi那些事儿(七)——802.11速率表
  • Hybrid接口配置与应用指南
  • Webug4.0靶场通关笔记17- 第21关文件上传(htaccess)
  • Leetcode 刷题记录 08 —— 链表第二弹
  • FreeRTOS任务与中断服务程序ISR
  • 推荐系统架构设计
  • 雅思阅读--易错词汇60个
  • 《深入理解分布式系统》之认识分布式系统
  • 兰亭妙微设计外包:把专业交给专业,让创意落地生花
  • Kaamel白皮书:GenAI 时代的隐私困境
  • 依图科技C++后端开发面试题及参考答案
  • 基于 Spring Boot 瑞吉外卖系统开发(十)
  • NVIDIA Halos:智能汽车革命中的全栈式安全系统
  • LeetCode 220 存在重复元素 III 题解
  • LeetCode热题100--238.除自身以外数组的乘积--中等