LeetCode 241. 为运算表达式设计优先级(动态规划)

1. 解题

给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。
你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 *

示例 1:
输入: "2-1-1"
输出: [0, 2]
解释: 
((2-1)-1) = 0 
(2-(1-1)) = 2示例 2:
输入: "2*3-4*5"
输出: [-34, -14, -10, -10, 10]
解释: 
(2*(3-(4*5))) = -34 
((2*3)-(4*5)) = -14 
((2*(3-4))*5) = -10 
(2*((3-4)*5)) = -10 
(((2*3)-4)*5) = 10

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/different-ways-to-add-parentheses
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. DP解题

  • dp[i][j]存储区间[i,j]内可能的结果数值
  • 先初始化dp[i][i],dp[i][i+1]
  • 然后按照区间长度 len 不断加大 dp[i][i+len] = sum(dp[i][j] op dp[j+1][i+len]) j 在区间内遍历,左右的数组合进行运算的值,存入dp[i][i+len]
class Solution {
public:vector<int> diffWaysToCompute(string input) {int i, j, k, num=0;vector<int> arr;//数字存起来vector<char> op;//操作符存起来for(i = 0; i < input.size(); ++i){if(!isdigit(input[i])){arr.push_back(num);op.push_back(input[i]);num = 0;}elsenum = num*10+input[i]-'0';}arr.push_back(num);//最后一个数字int n = arr.size();vector<vector<vector<int>>> dp(n,vector<vector<int>>(n));for(i = 0; i < n-1; ++i){dp[i][i] = {arr[i]};//初始化dp[i][i]if(op[i]=='+')dp[i][i+1] = {arr[i]+arr[i+1]};//初始化dp[i][i+1]else if(op[i]=='-')dp[i][i+1] = {arr[i]-arr[i+1]};else if(op[i]=='*')dp[i][i+1] = {arr[i]*arr[i+1]};}dp[n-1][n-1] = {arr[n-1]};//初始化dp[i][i]for(int len = 2; len < n; ++len){	//按长度dpfor(i = 0; i < n-len; ++i){	//左端点for(j = i; j < i+len; ++j){	//中间端点for(int dl : dp[i][j]){	//左边的数值for(int dr : dp[j+1][i+len])//左边的数值if(op[j]=='+')dp[i][i+len].push_back(dl+dr);else if(op[j]=='-')dp[i][i+len].push_back(dl-dr);else if(op[j]=='*')dp[i][i+len].push_back(dl*dr);}}}}sort(dp[0][n-1].begin(),dp[0][n-1].end());return dp[0][n-1];}
};

在这里插入图片描述

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

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

相关文章

python具体应用过程_python公开课|Python for循环的具体应用就是python流程控制的核心,想学会就来看看...

【摘要】在这个科学技术高速发展的时代&#xff0c;越来越多的人都开始选择学习编程软件&#xff0c;那么首先被大家选择的编程软件就是python&#xff0c;也用在各行各业之中&#xff0c;并被大家所熟知&#xff0c;所以也有越来越多的python学习者关注python问题&#xff0c;…

知识图谱入门知识(三)词性标注

学习内容 基本大多数的问题都可以转为词性标注问题&#xff01; 这里只做记录&#xff0c;都是别人的回答&#xff01; 常用的概念 什么是token tokenization就是通常所说的分词&#xff0c;分出的每一个词语我们把它称为token。 链接 词性标注参考一 自然语言处理之序列标…

sql 查讯本日 本周 本月

sql 查询本周本月问题---求相差天数 select datediff(day,2004-01-01,getdate()) --1.一个月第一天的 SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) --2.本周的星期一 SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0) sel…

python爬虫入门必备正则_python 爬虫入门之正则表达式 一

python 正则表达式知识点正则 常用符号. : 匹配任意字符&#xff0c;换行符除外* &#xff1a; 匹配前一个字符 0 次或者无限次&#xff1f; &#xff1a; 匹配前一个字符 0次或者1次.* &#xff1a; 贪心算法.*&#xff1f; &#xff1a;非贪心算法()&#xff1a; 括号内的数…

李宏毅机器学习(三)Word Embedding

学习内容 前情提要 使用一个vector来表示一个word&#xff0c;怎么做&#xff1f; 1-of-N Encoding 维度就是所有单词的量 缺点&#xff1a; dog 和 cat是不能归为一类的&#xff0c;只能单独的表示&#xff1b; Word CLass 将同类别的归为一类&#xff1b; 但是更高层的tok…

IBM T61 键盘没有反映。

出现这个问题不是一次两次了&#xff0c;就是启动后&#xff0c;键盘所有按键&#xff0c;小红帽都不能用&#xff0c;必须重启好几次才能用。 有时候键盘能用&#xff0c;但是打开 dw ,复制不能用&#xff0c;真是懊恼。 今天又出现这个情况&#xff0c;我偶然想到是不是和昨天…

LeetCode 680. 验证回文字符串 Ⅱ

1. 题目 给定一个非空字符串 s&#xff0c;最多删除一个字符。判断是否能成为回文字符串。 示例 1: 输入: "aba" 输出: True示例 2: 输入: "abca" 输出: True 解释: 你可以删除c字符。 注意: 字符串只包含从 a-z 的小写字母。字符串的最大长度是50000。来…

python的序列类型及其特点_Fluent Python 笔记——序列类型及其丰富的操作

序列的分类Python 标准库用 C 语言实现了丰富的序列类型的数据结构&#xff0c;如&#xff1a;容器序列(能存放不同类型的数据)&#xff1a;list、tuple、collections.deque 等扁平序列(只容纳同一类型的数据)&#xff1a;str、bytes、bytearray、memoryview、array.array>&…

论文阅读翻译(全)【一直更新】

学习内容 这里面包含了阅读中翻译的概述&#xff01; CNN is not invariant to scaling and rotation&#xff1b; invariant&#xff1a; 不变的&#xff1b; not invariant&#xff1a; 不是不变的 CNN是变化的&#xff01; 不和不消除&#xff01; 1. 词语 1.1 词形 泛…

精选15个国外CSS框架

下面一起来了解一下各种不同的CSS框架吧: 1.960 Grid System 960网格系统是一个通过提供通常使用的尺寸简化网站开发流程的努力的结果&#xff0c;基于960像素的页面宽度。它有两种类型&#xff0c;12和16列&#xff0c;他们可以独立使用或是协同使用。 2.WYMstyle CSS Framewo…

LeetCode 682. 棒球比赛

1. 题目 你现在是棒球比赛记录员。 给定一个字符串列表&#xff0c;每个字符串可以是以下四种类型之一&#xff1a; 1.整数&#xff08;一轮的得分&#xff09;&#xff1a;直接表示您在本轮中获得的积分数。 2. ""&#xff08;一轮的得分&#xff09;&#xff1a;…

Lighttpd 的安装配置(web服务器软件)

Lighttpd 的安装配置2006-07-16 01:06lighttpd(http://lighttpd.net/)和apache一样是开源的&#xff0c;与apache相比&#xff0c;虽然功能不及apache完善&#xff0c;稳定性也不如apache&#xff0c;但是&#xff0c;不管是服务静态页面&#xff0c;还是服务动态内容(CGI&…

苹果企业证书_IOS福利9月15日苹果企业证书已更新!重新下载即可!

(视频素材来源于网上)支持系统&#xff1a;苹果上一期你可能错过的&#xff1a;全网短视频免费去水印&#xff0c;还支持解析VIP影视&#xff01;最近众号修改推送的机制&#xff0c;请大家一定要把公众号&#xff1a;玩转网络科技&#xff0c;设置成“星标⭐”&#xff0c;再点…

LeetCode 697. 数组的度

1. 题目 给定一个非空且只包含非负数的整数数组 nums 数组的度的定义是指数组里任一元素出现频数的最大值 你的任务是找到与 nums 拥有相同大小的度的最短连续子数组&#xff0c;返回其长度。 示例 1: 输入: [1, 2, 2, 3, 1] 输出: 2 解释: 输入数组的度是2&#xff0c;因为…

李宏毅机器学习(四)Spatial Transformer Layer

学习内容 架构&#xff1b; 目的就是克服CNN的旋转和缩放不变性的缺点的&#xff01; 前情提要 CNN is not invariant to scaling and rotation&#xff1b; CNN对缩放和旋转不是不变的&#xff1b;也就是说CNN是变化的&#xff0c;不具有旋转和缩放不变性&#xff1b; 因为…

我的大理行

离开北京的时候是周五&#xff0c;天气很诡异&#xff1a;潮湿而又充满尘燥&#xff0c;阴霾而又阳光明亮&#xff0c; 真不知道这样的天气怎么能够共存&#xff1f;&#xff01; 我发神经的做上了飞往云南的航班&#xff0c;这是休息&#xff0c;是治疗。 飞机正位&#xff0c…

LeetCode 703. 数据流中的第K大元素(优先队列)

1. 题目 设计一个找到数据流中第K大元素的类&#xff08;class&#xff09;。 注意是排序后的第K大元素&#xff0c;不是第K个不同的元素。 你的 KthLargest 类需要一个同时接收整数 k 和整数数组nums 的构造器&#xff0c;它包含数据流中的初始元素。 每次调用 KthLargest.a…

李宏毅机器学习(五)Transformer

学习内容 前情提要 Sequence-to-sequence&#xff08;Seq2Seq&#xff09; 输入是一个句子&#xff0c;输出长度不定&#xff1b; 下面的第一个是语音辨识&#xff0c;第二个是机器翻译&#xff0c;第三个是语音翻译。这三个都是独立的任务。 第三个是语音翻译&#xff0c;就…

Asp.net中的时区

首先&#xff0c;日期时间转换在 Asp.net 中的几种应用&#xff1a; 1. <ASP:BOUNDCOLUMN DATAFIELD "JoinTime " DATAFORMATSTRING "{0:yyyy-MM-dd} " > <ITEMSTYLE WIDTH "18% " > </ITEMSTYLE > </ASP:BOUNDCO…

中文python笔记_Python学习笔记-基础篇

安装LinuxLinux已经自带Python了&#xff0c;我的Centos7自带Python2.7.4&#xff0c;我通过源码安装来更新版本。#!/bin/bash#源码安装wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgztar -zxvf Python-2.7.9.tgzcd Python-2.7.9#编译安装./configuremakemake…