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

LeetCode Hot 100:动态规划

LeetCode Hot 100:动态规划

70. 爬楼梯

class Solution {
public:int climbStairs(int n) {if (n == 0)return 0;vector<int> dp(n + 1);// 初始化dp[0] = 1;// 状态转移for (int i = 1; i <= n; i++) {dp[i] += dp[i - 1];if (i >= 2)dp[i] += dp[i - 2];}return dp[n];}
};

118. 杨辉三角

class Solution {
public:vector<vector<int>> generate(int numRows) {vector<vector<int>> ans(numRows);for (int i = 0; i < numRows; i++) {ans[i].resize(i + 1);ans[i][0] = ans[i][i] = 1;}for (int i = 1; i < numRows; i++)for (int j = 1; j < i; j++)ans[i][j] = ans[i - 1][j - 1] + ans[i - 1][j];return ans;}
};

198. 打家劫舍

class Solution {
public:int rob(vector<int>& nums) {if (nums.empty())return 0;int n = nums.size();if (n == 1)return nums[0];vector<int> dp(n + 1);// 初始化dp[0] = 0;dp[1] = nums[0];// 状态转移for (int i = 2; i <= n; i++)dp[i] = max(dp[i - 1], dp[i - 2] + nums[i - 1]);return dp[n];}
};

279. 完全平方数

思路 1:动态规划

class Solution {
public:int numSquares(int n) {// dp[i]: 最少需要多少个数的平方来表示 ivector<int> dp(n + 1);// 初始化dp[0] = 0;for (int i = 1; i <= n; i++) {int minCnt = INT_MAX;for (int j = 1; j * j <= i; j++)minCnt = min(minCnt, dp[i - j * j]);dp[i] = minCnt + 1;}return dp[n];}
};

思路 2:记忆化搜索

@cache
def dfs(i: int, j: int) -> int:if i == 0:return inf if j else 0if j < i * i:return dfs(i - 1, j)  # 只能不选res1 = dfs(i - 1, j)  # 不选res2 = dfs(i, j - i * i) + 1  # 选return min(res1, res2)class Solution:def numSquares(self, n: int) -> int:return dfs(isqrt(n), n)

322. 零钱兑换

class Solution {
public:int coinChange(vector<int>& coins, int amount) {if (coins.empty())return -1;if (amount == 0)return 0;int n = coins.size();if (n == 1 && amount % coins[0])return -1;// dp[i]: vector<int> dp(amount + 1, INT_MAX / 2);// 初始化dp[0] = 0;// 状态转移for (int i = 1; i <= amount; i++)for (int& coin : coins) {if (i < coin)continue;dp[i] = min(dp[i], dp[i - coin] + 1);}return dp[amount] == INT_MAX / 2 ? -1 : dp[amount];}
};

139. 单词拆分

class Solution {
public:bool wordBreak(string s, vector<string>& wordDict) {int n = s.length();// dp[i]: s[0,...,i] 是否可以利用 wordDict 拼接出来vector<bool> dp(n + 1, false);// 初始化dp[0] = true;// 状态转移for (int i = 1; i <= n; i++)for (string& word : wordDict) {int len = word.length();if (i >= len && s.substr(i - len, len) == word)dp[i] = dp[i] | dp[i - len];}return dp[n];}
};

300. 最长递增子序列

思路 1:贪心 + 二分查找

class Solution {
public:int lengthOfLIS(vector<int>& nums) {vector<int> lis;for (int& num : nums) {auto it = lower_bound(lis.begin(), lis.end(), num);if (it == lis.end())lis.push_back(num); // >=num 的 lis[j] 不存在else*it = num;}return lis.size();}
};

思路 2:动态规划

class Solution {
public:int lengthOfLIS(vector<int>& nums) {if (nums.empty())return 0;int n = nums.size();if (n == 1)return 1;vector<int> dp(n, 1);// 初始化for (int i = 0; i < n; i++)dp[i] = 1;int maxLen = 0;// 状态转移for (int i = 0; i < n; i++)for (int j = 0; j < i; j++) {if (nums[j] < nums[i])dp[i] = max(dp[i], dp[j] + 1);maxLen = max(maxLen, dp[i]);}return maxLen;}
};

152. 乘积最大子数组

class Solution {
public:int maxProduct(vector<int>& nums) {int n = nums.size();vector<int> minF(n, 0), maxF(n, 0);// 初始化minF[0] = nums[0];maxF[0] = nums[0];// 状态转移for (int i = 1; i < n; i++) {minF[i] =min({nums[i], minF[i - 1] * nums[i], maxF[i - 1] * nums[i]});maxF[i] =max({nums[i], minF[i - 1] * nums[i], maxF[i - 1] * nums[i]});}return *max_element(maxF.begin(), maxF.end());}
};

416. 分割等和子集

思路 1:0-1背包

class Solution {
public:bool canPartition(vector<int>& nums) {if (nums.empty())return false;int sum = accumulate(nums.begin(), nums.end(), 0);if (sum % 2 == 1)return false;int n = nums.size();int target = sum / 2;// dp[i,j]:前i个数字、总和不超过j的情况下,能否满足j == targetvector<vector<bool>> dp(n + 1, vector<bool>(target + 1, false));// 初始化dp[0][0] = true;// 状态转移for (int i = 1; i <= n; i++)for (int j = 1; j <= target; j++) {int w = nums[i - 1];if (j >= w)dp[i][j] = dp[i - 1][j] || dp[i - 1][j - w]; // 选elsedp[i][j] = dp[i - 1][j]; // 不选}return dp[n][target];}
};

思路 1:栈

class Solution {
public:int longestValidParentheses(string s) {if (s.empty())return 0;int maxLen = 0;stack<int> stk;stk.push(-1);for (int i = 0; i < s.length(); i++) {if (s[i] == '(')stk.push(i);else {stk.pop();if (stk.empty())stk.push(i);elsemaxLen = max(maxLen, i - stk.top());}}return maxLen;}
};

思路 2:动态规划

class Solution {
public:int longestValidParentheses(string s) {if (s.empty())return 0;int n = s.length();// dp[i]: 表示以下标 i 字符结尾的最长有效括号的长度vector<int> dp(n, 0);int maxLen = 0;// 状态转移for (int i = 1; i < n; 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] + ((i - dp[i - 1] - 2) >= 0 ? dp[i - dp[i - 1] - 2] : 0) + 2;}maxLen = max(maxLen, dp[i]);}return maxLen;}
};

相关文章:

LeetCode Hot 100:动态规划

LeetCode Hot 100&#xff1a;动态规划 70. 爬楼梯 class Solution { public:int climbStairs(int n) {if (n 0)return 0;vector<int> dp(n 1);// 初始化dp[0] 1;// 状态转移for (int i 1; i < n; i) {dp[i] dp[i - 1];if (i > 2)dp[i] dp[i - 2];}return …...

使用Python制作雪景图片教程

如果你想用Python写一个程序来输出有关“深夜雪”的诗意文本或描述&#xff0c;可以通过简单的字符串输出来实现。以下是一个示例代码&#xff0c;展示如何用Python来描绘深夜雪的场景。 # 定义深夜雪的描述 description """ 夜幕降临&#xff0c;天空洒下银色…...

S-Function

目录 S-Function介绍 生成S-Function的三种常用手段 使用手写S-函数合并定制代码 使用S-Function Builder块合并定制代码 使用代码继承工具合并定制代码 S-Function介绍 我们可以使用S-Function扩展Simulink对仿真和代码生成的支持。例如&#xff0c;可以使用它们&#xf…...

如何具备阅读JAVA JDK虚拟机源码能力

源码位置https://github.com/openjdk/jdk 核心实现源码[部分截图] /* * Copyright (c) 1995, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistr…...

Python | Leetcode Python题解之第514题自由之路

题目&#xff1a; 题解&#xff1a; Test "godding" target "d"i 0left i lc 0 right i rc 0while Test[left] ! target:left - 1lc 1if left -1:left len(Test) - 1while Test[right] ! target:right 1rc 1if right len(Test):right 0prin…...

Docker 镜像下载问题及解决办法

Docker 镜像下载问题及解决办法 我在杂乱的、破旧的村庄寂寞地走过漫长的雨季&#xff0c;将我年少的眼光从晦暗的日子里打捞出来的是一棵棵开花的树&#xff0c;它们以一串串卓然不俗的花擦明了我的眼睛&#xff0c;也洗净了我的灵魂。 引言 在使用 Docker 时&#xff0c;用户…...

2分钟搞定 HarmonyOs Next创建模拟器

官方文档参考链接&#xff1a; 创建模拟器-管理模拟器-使用模拟器运行应用/服务-应用/服务运行-DevEco Studio - 华为HarmonyOS开发者https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-emulator-create-V5 1. 首先打开Device Manager 2. 进入这个界面后…...

方形件排样优化与订单组批问题探析

方形件排样优化与订单组批问题是计算复杂度很高的组合优化问题&#xff0c;在工业工程中有很广泛的应用背景。为实现个性化定制生产模式&#xff0c;企业会选择订单组批的方式&#xff0c;继而通过排样优化实现批量切割&#xff0c;加工完成后再按照不同客户需求进行分拣&#…...

vue3组件通信--自定义事件

自定义事件是典型的子传父的方法。 为什么叫自定义事件呢&#xff1f;是因为我们用sendToy"getToy"这种格式写&#xff0c;很显然&#xff0c;在DOM中&#xff0c;没有叫sendToy的事件。 父组件FatherComponent.vue: <script setup> import ChildComponent fr…...

ubuntu 安装k3s

配置hostname的方法为 hostnamectl set-hostname k3sserver hostnamectlsudo apt-get update && sudo apt-get upgrade -y sudo apt-get install -y curl#手动下载v1.31.1k3s1 https://github.com/k3s-io/k3s/releases/tag/v1.31.1%2Bk3s1 #将k3s-airgap-images-amd64…...

SQL CHECK 约束:确保数据完整性的关键

SQL CHECK 约束:确保数据完整性的关键 在数据库管理中,确保数据的完整性和准确性是至关重要的。SQL(Structured Query Language)提供了多种约束条件来帮助实现这一目标,其中之一就是 CHECK 约束。本文将深入探讨 SQL CHECK 约束的概念、用法和优势,并展示如何在不同的数…...

C++ | Leetcode C++题解之第502题IPO

题目&#xff1a; 题解&#xff1a; typedef pair<int,int> pii;class Solution { public:int findMaximizedCapital(int k, int w, vector<int>& profits, vector<int>& capital) {int n profits.size();int curr 0;priority_queue<int, vect…...

《虚拟现实的边界:探索虚拟世界的未来可能》

内容概要 在虚拟现实&#xff08;VR&#xff09;技术的浪潮中&#xff0c;我们见证了其从实验室的奇想逐渐走向日常生活的非凡旅程。技术发展的背后是不断突破的创新&#xff0c;早期的设备虽然笨重&#xff0c;但如今却趋向精致、轻巧&#xff0c;用户体验显著提升。想象一下…...

Rust教程

2024 Rust现代实用教程&#xff1a;1.1Rust简介与安装更新––2024 Rust现代实用教程&#xff1a;1.2编译器与包管理工具以及开发环境–––––––––––...

测试代理IP的有效性和可用性

使用代理IP的有效性和可用性直接关系到用户的工作效率&#xff0c;尤其是在进行数据抓取、网络爬虫和保护个人隐私等场景中。 一、测试代理IP的必要性 代理IP的可用性测试是确保代理服务正常运行的重要步骤。测试代理IP的必要性主要体现在以下几个方面&#xff1a; 提升工作…...

散列表:为什么经常把散列表和链表放在一起使用?

散列表:为什么经常把散列表和链表放在一起使用? 在计算机科学中,散列表(哈希表)和链表是两种常见的数据结构。你可能会好奇,为什么它们经常被放在一起使用呢?让我们一起来深入探讨这个问题。 一、散列表的特点 散列表是一种根据关键码值(Key value)而直接进行访问的…...

计算机网络:网络层 —— IPv4 地址与 MAC 地址 | ARP 协议

文章目录 IPv4地址与MAC地址的封装位置IPv4地址与MAC地址的关系地址解析协议ARP工作原理ARP高速缓存表 IPv4地址与MAC地址的封装位置 在数据传输过程中&#xff0c;每一层都会添加自己的头部信息&#xff0c;最终形成完整的数据包。具体来说&#xff1a; 应用层生成的应用程序…...

PMP--一、二、三模、冲刺、必刷--分类--10.沟通管理--技巧--文化意识

文章目录 技巧一模10.沟通管理--1.规划沟通管理--文化意识--军事背景和非军事背景人员有文化差异文化意识&#xff1a;题干关键词 “两拨人的背景不同、文化差异、风格差异”。5、 [单选] 项目团队由前军事和非军事小组成员组成。没有军事背景的团队成员认为前军事团队成员在他…...

FileReader和FileWriter

FileReader 使用read()方法读取单个字符&#xff0c;下面是如何修改使程序性能更好的过程。 第一种&#xff1a;处理异常方式为throws Testpublic void test() throws IOException {//读取hello.txt&#xff0c;并显示内容// 创建文件对象File file new File("hello.txt…...

【UE5】将2D切片图渲染为体积纹理,最终实现使用RT实时绘制体积纹理【第六篇-阶段总结篇】

因为马上就要进入下一个阶段&#xff0c;制作动态编辑体积纹理的模块。 但在这之前&#xff0c;要在这一章做最后一些整理。 首先&#xff0c;我们完成没完成的部分。其次&#xff0c;最后整理一下图表。最后&#xff0c;本文附上正在用的贴图 完善Shader 还记得我们之前注…...

Zrlog面试问答及问题解决方案

面试问答 结合 ZrLog 部署&#xff08;Maven 构建 环境配置 服务部署&#xff09;的全流程&#xff0c;整理排查 / 运维 / 开发三类高频问题&#xff0c;覆盖场景、原因、解答思路&#xff0c;可直接用于沟通或故障定位&#xff1a; 一、环境准备阶段高频问题 1. 执行 jav…...

快速部署:在星图AI平台训练PETRV2-BEV模型,支持NuScenes数据集

快速部署&#xff1a;在星图AI平台训练PETRV2-BEV模型&#xff0c;支持NuScenes数据集 1. 环境准备与快速部署 1.1 激活Paddle3D环境 首先需要确保已经创建并激活了Paddle3D的conda环境&#xff1a; conda activate paddle3d_env如果尚未创建该环境&#xff0c;建议先安装M…...

5步搞定OpenClaw+Qwen3-32B:RTX4090D镜像一键接入实战

5步搞定OpenClawQwen3-32B&#xff1a;RTX4090D镜像一键接入实战 1. 为什么选择云端沙盒方案 当我第一次听说OpenClaw这个开源自动化框架时&#xff0c;内心既兴奋又忐忑。作为一个喜欢折腾新技术的开发者&#xff0c;我迫不及待想尝试这个能像人类一样操作电脑的AI助手。但看…...

Arduino控制步进电机全攻略:从脉冲计算到加速曲线优化

Arduino控制步进电机全攻略&#xff1a;从脉冲计算到加速曲线优化 引言&#xff1a;为什么需要精准控制步进电机&#xff1f; 在创客和嵌入式开发领域&#xff0c;步进电机因其精准的开环控制特性而广受欢迎。不同于普通直流电机&#xff0c;步进电机能够通过精确控制脉冲数量来…...

SDMatte镜像轻量化:去除冗余依赖、多阶段构建、镜像体积压缩至3.2GB

SDMatte镜像轻量化&#xff1a;去除冗余依赖、多阶段构建、镜像体积压缩至3.2GB 1. 项目背景与挑战 SDMatte是一款面向高质量图像抠图的AI模型&#xff0c;特别擅长处理复杂边缘和半透明物体的抠图任务。在电商、设计、内容创作等领域有着广泛的应用场景。然而&#xff0c;原…...

计算机毕业设计springboot基于的养老平台的设计与实现 SpringBoot架构下智慧养老综合服务系统的设计与实现 基于Java的社区养老数字化管理平台开发

计算机毕业设计springboot基于的养老平台的设计与实现&#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。我国正加速步入老龄化社会&#xff0c;老年人口规模持续扩大&#xff0c;传…...

Nunchaku FLUX.1-dev效果实测:低光照/夜景/逆光等复杂场景表现

Nunchaku FLUX.1-dev效果实测&#xff1a;低光照/夜景/逆光等复杂场景表现 你是不是也遇到过这样的烦恼&#xff1f;想用AI生成一张夜景照片&#xff0c;结果画面一片死黑&#xff0c;细节全无&#xff1b;或者想创作一张逆光人像&#xff0c;结果人物脸部黑成一团&#xff0c…...

Gatling性能测试结果版本控制终极指南:追踪与对比性能指标的最佳实践

Gatling性能测试结果版本控制终极指南&#xff1a;追踪与对比性能指标的最佳实践 【免费下载链接】gatling Modern Load Testing as Code 项目地址: https://gitcode.com/gh_mirrors/ga/gatling Gatling是一款现代化的负载测试工具&#xff0c;采用代码即测试的理念&…...

从零开始:使用TypeScript快速构建浏览器RPG游戏的终极指南

从零开始&#xff1a;使用TypeScript快速构建浏览器RPG游戏的终极指南 【免费下载链接】RPG-JS Framework to create an RPG or MMORPG (with the same code) in the browser with Typescript 项目地址: https://gitcode.com/gh_mirrors/rp/RPG-JS 想要在浏览器中创建令…...

4G手机远程断电停电报警器:三重告警,漏报风险全杜绝

4G手机远程断电停电报警器&#xff0c;简单来说&#xff0c;就是一款在监测到设备停电时&#xff0c;能通过4G网络自动给你打电话、发短信“通风报信”的智能硬件。解决人不在现场&#xff0c;如何第一时间知道设备停电了。特别适合那些停电会造成严重损失的场景&#xff0c;比…...