LeetCode 热题 HOT 100 (040/100)【宇宙最简单版】

Mongodb操作与Java(四)MongoTemplate的使用 MongoTemplate的使用 阅读详情

【动态规划】No. 0312 戳气球【困难】👉力扣对应题目指路

希望对你有帮助呀!!💜💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦
欢迎关注、订阅专栏 【力扣详解】谢谢你的支持!


⭐ 题目描述:给定一个数组 nums,它的第 i 个元素表示编号为 i 的气球上的数字。 每次戳破气球 i,可以获得 nums[i-1] * nums[i] * nums[i+1] 个硬币,返回通过戳破所有气球所能获得的 最大硬币数量

  • 其中,nums[i-1] 和 nums[i+1] 是气球 i 左右相邻的气球编号
  • 如果 i-1 或 i+1 超出数组边界,则视为 1

示例:

示例 1:
  • 输入: nums = [3,1,5,8]
  • 输出: 167
  • 解释:
    • nums = [3,1,5,8] --> [3,5,8] --> [3,8] --> [8] --> []
    • 硬币数 = 3*1*5 + 3*5*8 + 1*3*8 + 1*8*1 = 167
示例 2:
  • 输入: nums = [1,5]
  • 输出: 10

🔥 思路:这道题的关键在于找到戳破气球的最佳顺序。由于直接模拟顺序较复杂,我们可以通过 动态规划 来解决问题

  1. 动态规划定义
  • 设 dp[i][j] 表示 戳破区间 (i, j) 中所有气球后所能获得的最大硬币数 (不包含边界)
  • i 和 j 是气球的左右边界。为了方便处理边界条件,假设数组两端各有一个虚拟气球,值为 1
  1. 状态转移:
  • 当最后戳破气球 k 时,其左右未戳破的区间为 (i, k) 和 (k, j)
  • dp[i][j] = max(dp[i][j], dp[i][k] + dp[k][j] + nums[i] * nums[k] * nums[j])
    • nums[i] * nums[k] * nums[j]:最后戳破气球 k 时的硬币数 (即最后只剩下边界和 k)
    • dp[i][k]:区间 (i, k) 的最大硬币数
    • dp[k][j]:区间 (k, j) 的最大硬币数
  1. 计算顺序:【按区间长度从小到大遍历:for length in range(2, n+1)】

🔨 代码实现

class Solution:
    def maxCoins(self, nums: list[int]) -> int:
        # 在 nums 两端加入虚拟气球,值为 1
        nums = [1] + nums + [1]
        n = len(nums)
        
        # 初始化 dp 数组
        dp = [[0] * n for _ in range(n)]

        # 按区间长度逐渐递增
        for length in range(2, n+1):  # length 表示区间长度,至少为 2
            for i in range(0, n-length):  # 左边界
                j = i + length  # 右边界
                # 在区间 [i, j] 中尝试最后戳破气球 k
                for k in range(i + 1, j):  # k 在 (i, j) 范围内
                    dp[i][j] = max(dp[i][j],
                                   dp[i][k] + dp[k][j] + nums[i] * nums[k] * nums[j])

        return dp[0][n-1]

复杂度分析:

  • 时间复杂度:O(n^3),外层两重循环分别是区间长度和左边界,最内层是遍历气球 k ✨
  • 空间复杂度:O(n^2),使用了一个二维数组 dp 存储中间状态 ✨

希望对你有帮助呀!!💜💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦
🔥 LeetCode 热题 HOT 100

VB摄像头监控 该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制 立即下载

相关推荐

VOLTE信令流程-IMS注册篇(五)

目录 VOLTE信令流程-IMS 注册 VOLTE信令流程-IMS 注册/注销 VOLTE信令流程-VoLTE呼叫流程 VoLTE-VoLTE VoLTE-CS CS-VoLTE CS-CS VOLTE信令流程 VOLTE信令流程-VOLTE-VOLTE信令 VOLTE信令流程-INVITE详细信息 VOLTE信令流程-eSRVCC信令流程 VOLTE信令流程-IP短信 VOLTE信令流程-IMS 注册 IMS注册流程简述  获取鉴权向量 IMS用户将注...

gender123的博客 2万+

LeetCode 热题 HOT 100 (031/100)【宇宙最简单版】

💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦 【二叉树】No. 0437 路径总和 III【中等】

哒哒哒哒 哒哒 1004

雷电模拟器+Auto.js避坑指南:用桥接模式解决PC与模拟器连接超时问题

本文详细解析了雷电模拟器与Auto.js联调中的桥接模式应用,解决PC与模拟器连接超时问题。通过桥接模式配置、高频故障排查及多开环境下的高阶配置,提升开发效率与稳定性,特别适合需要稳定网络连接的Auto.js开发者。

weixin_28836989的博客 632

LeetCode 热题 HOT 100 (009/100)【宇宙最简单版】

💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦 【图论】No. 0207 课程表【中等】

哒哒哒哒 哒哒 1400

【主力资金密码】副图指标升级版使用技术图文案例分解,通达信软件炒股指标公式代码

(1)主力资金线在低位时,对应的副图指标显示柱线是绿色,这个阶段主力资金参与小,行情处于下跌趋势或弱势震荡。当然,如果结合主图指标【翻倍密码系统】操作,主图的两个买卖点以及K线均线变色跟踪功能,更多的技术支撑,多空更加清晰,共振做多或多头更加确定和安全。如上图标记,中档虚线是参考安全操作的一个区间划分,粉色阶段做多或持股为主,为操作增加一道安全保护。如上图,副图指标【主力资金密码】更新叠加操作区间背景,绿色阶段持币或做空,粉色阶段做多或持股。如上图,副图指标,标记的两个区间,绿色区间时做空或持币。

weixin_69760830的博客 2553

windows中通过docker部署LocateAnything-3B模型

windows中通过docker部署LocateAnything-3B模型

yilvyangguang520的博客 485

LeetCode 热题 HOT 100 (021/100)【宇宙最简单版】

💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦 【动态规划】No. 0139 单词拆分 【中等】

哒哒哒哒 哒哒 1219

QT控件 参考Qt的PIMPL设计模式实现使用QWidget控件绘制3D饼状图表和3D柱状图表,使用QChartView绘制圆柱体图表

工作中之前遇到了绘制3D饼状图表的需求,通过Qt 实现3维饼状图 一文,成功迅速解决问题,现在闲下来了,之前看QtTreePropertyBrowser库的源代码,就想着学习学习Qt的PIMPL模式,于是就参照PIMPL模式实现通过QWidget控件的paintEvent函数重新绘制3D饼状图表和3D柱状图表统计数据的显示效果, 而使用QChartView绘制圆柱体图表完全是取巧了,为了紧急完成工作采用的方法,实际上使用3D柱状图表显示统计数据更加合理。

... 727

LeetCode 热题 HOT 100 (001/100)【宇宙最简单版】

💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦 【链表】 No. 0160 相交链表 【简单】

哒哒哒哒 哒哒 1028

【QNX+Android虚拟化方案】01 - 芯片介绍

【QNX+Android虚拟化方案】01 - 芯片介绍

|~~~热爱生活、努力学习的小伙汁~~~| 2945

C++ PCL点云处理实战专栏

工业级点云处理技术学习资源,涵盖电力、建筑、隧道等领域的实战案例。内容分为三阶段:代码原理(算法认知)、动态库(项目验证)和完整代码(定制开发)。

weixin_45196569的博客 1117

LeetCode 热题 HOT 100 (018/100)【宇宙最简单版】

💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦 【链表】No. 0146 LRU缓存【中等】

哒哒哒哒 哒哒 1806

Android Framework 开发工程师职位深度解析与面试指南

摘要:博泰车联网科技(上海)股份有限公司招聘Android Framework开发工程师,负责车载系统的底层开发与优化。岗位要求5年以上经验,深入掌握Android Framework机制(WindowManager、PowerManager等模块),熟悉高通平台中间件架构及NDK/JNI开发,具备性能优化(启动时间、ANR处理)、OTA升级等能力。需熟练使用Android Studio、Git等工具,有车载开发经验者优先。工作内容包括Framework定制开发、问题排查及技术文档编写。

郑伟强dev的专栏 552

LeetCode 热题 HOT 100 (027/100)【宇宙最简单版】

💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦 【动态规划】No. 0494 目标和 【中等】

哒哒哒哒 哒哒 1115

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

LeetCode 热题 HOT 100 (033/100)【宇宙最简单版】

💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦 【贪心算法】No. 0406 根据身高重建队列【中等】

哒哒哒哒 哒哒 2187

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

LeetCode 热题 HOT 100 (004/100)【宇宙最简单版】

💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦 【单调栈】No. 0739 每日温度 【中等】

哒哒哒哒 哒哒 567

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

LeetCode 热题 HOT 100 (002/100)【宇宙最简单版】

💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦 【二叉树】No. 0236 二叉树的最近公共祖先 【中等】

哒哒哒哒 哒哒 989

LeetCode 热题 HOT 100 (005/100)【宇宙最简单版】

💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦 【二叉树】No. 0226 翻转二叉树【简单】

哒哒哒哒 哒哒 727

LeetCode 热题 HOT 100 (034/100)【宇宙最简单版】

💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦 【广度优先搜索】No. 0399 除法求值【中等】

哒哒哒哒 哒哒 1014

LeetCode 热题 HOT 100 (022/100)【宇宙最简单版】

💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦 【技巧】No. 0136 只出现一次的数字【简单】

哒哒哒哒 哒哒 407

LeetCode 热题 HOT 100 (008/100)【宇宙最简单版】

💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦 【图论】No. 0208 实现 Trie (前缀树)【中等】

哒哒哒哒 哒哒 1010

LeetCode 热题 HOT 100 (032/100)【宇宙最简单版】

💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦 【动态规划】No. 0416 分割等和子集 【中等】

哒哒哒哒 哒哒 885

LeetCode 热题 HOT 100 (013/100)【宇宙最简单版】

💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦 【技巧】No. 0169 多数元素【简单】

哒哒哒哒 哒哒 738

LeetCode 热题 HOT 100 (041/100)【宇宙最简单版】

💜💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦 【优先级队列】No. 313 第 n 个超级丑数【中等】

哒哒哒哒 哒哒 472

LeetCode 热题 HOT 100 (007/100)【宇宙最简单版】

💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦 【数组】No. 0215 数组中第 k 个最大的元素【中等】 本篇同时也包含:快速排序算法的图文详解

哒哒哒哒 哒哒 685

LeetCode 热题 HOT 100 (039/100)【宇宙最简单版】

💜💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦 【贪心算法】No. 0121 买卖股票的最佳时机【简单】

哒哒哒哒 哒哒 512
上一篇: LeetCode 热题 HOT 100 (039/100)【宇宙最简单版】
下一篇: LeetCode 热题 HOT 100 (041/100)【宇宙最简单版】
CODE_RabbitV
博客等级 码龄7年 2931粉丝 218原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值