- 84. 柱状图中最大的矩形
来到了没有知识的荒原
84.柱状图中最大的矩形classSolution{public:intlargestRectangleArea(vector&heights){intn=heights.size();if(n==0)return0;vectornewheight(n+2,0);for(inti=1;istk;stk.push(0);intres=0;for(inti=1;iheights[i]){inth=he
- 代码随想录算法训练营第二十二天
天天开心(∩_∩)
算法深度优先
LeetCode.77组合题目链接组合题解classSolution{List>result=newArrayListpath=newLinkedList>combine(intn,intk){dfs(n,k,1);returnresult;}publicvoiddfs(intn,intk,intcount){if(path.size()==k){result.add(newArrayList>r
- 代码随想录算法训练营第二十三天
天天开心(∩_∩)
算法
LeetCode.39组合总和题目链接组合总和题解classSolution{List>resList=newArrayList>();Listres=newArrayList>combinationSum(int[]candidates,inttarget){if(candidates==null||candidates.length==0){returnresList;}Arrays.sort
- 代码随想录算法训练营第二十四天
天天开心(∩_∩)
算法深度优先
LeetCode.93复原IP地址题目链接复原IP地址题解classSolution{ListresList=newArrayList();Listres=newArrayList();publicListrestoreIpAddresses(Strings){if(s.length()==0)returnresList;dfs(s,0);returnresList;}publicvoiddfs(
- 代码随想录算法训练营第十七天
天天开心(∩_∩)
算法数据结构
目录LeetCode.654最大二叉树题目链接最大二叉树题解解题思路LeetCode.617合并二叉树题目链接合并二叉树题解解题思路LeetCode.700二叉搜索树中的搜索题目链接二叉搜索树中的搜索题解解题思路解题思路LeetCode.98验证二叉搜索树题目链接验证二叉搜索树题解解题思路解题思路总结与收获LeetCode.654最大二叉树题目链接最大二叉树题解classSolution{publ
- 泽平 的ScalersTalk第七轮新概念朗读持续力训练Day 307 20220123
郑泽平
练习材料:L3-(1):AnunknowngoddessSometimeago,aninterestingdiscoverywasmadebyarchaeologistsontheAegeanislandofKea.AnAmericanteamexploredatemplewhichstandsinanancientcityonthepromontoryofAyiaIrini.Thecityato
- 力扣25.7.15每日一题——有效单词
一个OI蒟蒻
LeetCodeleetcode算法职场和发展
Description应该都能看懂吧……Solution一道简单的模拟题。按照题意枚举字符串,判断元/辅音;判断合法即可。也不知道今天的题为什么怎么淼Code(C++、Python3)C++classSolution{public:boolisValid(stringword){if(word.size()bool:iflen(word)<3:returnFalsee=f=Falseforcinw
- rust最低什么显卡能游戏_腐蚀Rust配置要求汇总 腐蚀Rust游戏配置要求是什么_游侠网...
微尘-黄含驰
rust最低什么显卡能游戏
腐蚀Rust游戏配置要求是什么?体验版本发售了有四年之久,如今正式版终于有了新消息,将于2月8号发售正式版,今天给大家带来的是腐蚀Rust配置要求汇总,一起来看下吧。配置要求汇总Windows最低配置:Requiresa64-bitprocessorandoperatingsystem操作系统:Windows764bit处理器:2ghz内存:8GBRAM图形:NVIDIAGTX6702GB/AMD
- Lan的ScalersTalk第四轮新概念朗读持续力训练Day 288 20190722
孙岚_9ff8
练习材料:[Day17602019-07-22]Lesson24-2BeautyThereisnoskyinJunesobluethatitdoesnotpointforwardtoabluer,nosunsetsobeautifulthatitdoesnotwakenthevisionofagreaterbeauty,avisionwhichpassesbeforeitisfullyglimps
- 深入解析Battelle/movfuscator项目的后处理技术
邹滢朦
深入解析Battelle/movfuscator项目的后处理技术项目概述Battelle/movfuscator是一个独特的编译器项目,它能够将C代码转换为仅使用MOV指令的汇编代码。而其后处理器(post-processor)组件则提供了更多强大的功能扩展,可以将这些汇编代码进一步转换为使用特定指令集的版本,实现更深层次的代码混淆和优化。后处理器工作原理后处理器的工作流程分为以下几个关键步骤:首
- lesson17:Python函数之递归、匿名函数与变量作用域
目录引言一、递归函数:用自身解构复杂问题1.递归的基本结构2.递归的典型应用场景3.递归的优缺点与优化二、匿名函数:用lambda实现“一句话函数”1.lambda与普通函数的区别2.lambda的典型应用3.lambda的局限性三、变量作用域:理解LEGB规则1、LEGB规则的深度解析(1)Local(局部作用域)(2)Enclosing(嵌套作用域)(3)Global(全局作用域)(4)Bui
- lesson11:Python的字典及方法
你的电影很有趣
windowspython
目录前言一、字典的定义与核心价值创建方式:二、核心特性:键的规则与无序性演变1、键的不可变性与唯一性2、无序性与Python版本差异三、常用操作与方法全解析四、与列表/元组的对比:数据结构选型指南五、高级应用技巧六、避坑指南:常见错误与最佳实践总结前言在Python的“数据结构工具箱”中,字典(Dictionary)无疑是最灵活、最强大的工具之一。无论是存储用户信息、解析JSON数据,还是实现缓存
- lesson18:Python函数的闭包与装饰器(难)
你的电影很有趣
python开发语言
目录引言闭包:函数式编程的"状态容器"一、闭包的本质与定义二、闭包的三大形成条件三、闭包的工作原理:变量的“持久化”四、闭包的核心应用场景五、闭包的注意事项六、闭包与装饰器的关系装饰器:基于闭包的功能增强工具一.装饰器的定义与作用二.装饰器的实现原理(基于闭包)三、装饰器进阶:灵活扩展功能1.带参数的装饰器2.保留函数元信息3.类装饰器与装饰器嵌套四、装饰器实战案例案例一:时间开销计算(性能监控)
- leetcode 搜索二维矩阵 II python 四分法
DaydayHoliday
利用矩阵左上角元素总是最小,右下角总是最大的特性,将矩阵分成四部分,分别递归。请各位大佬多多提意见。classSolution(object):defsearchMatrix(self,matrix,target):""":typematrix:List[List[int]]:typetarget:int:rtype:bool"""row_num=len(matrix)ifrow_num==0:r
- 介绍一款 MRI&CT 图像预处理强大工具--FSL
Tina姐吖
FSL是什么?全名是:FMRIB'sSoftwareLibraryFMRIB是英国牛津大学脑功能磁共振成像中心,FSL则是他们开发的一个软件库。由StephenSmith教授开发,发布于2000年适用于所有操作系统用于结构MRI、功能MRI(任务、静息)、扩散MRI的分析MRI,CT数据的预处理和分析MRI,CT数据的查看具体地,可以分为以下4类功能1结构MRI配准:linear(FLIRT)&n
- 观察者模式
午觉不眠Orz
一.概念当对象间存在一对多关系时,则使用观察者模式(ObserverPattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。定义:Defineaone-to-manydependencybetweenobjectssothatwhenoneobjectchangesstate,allitsdependentsarenotifiedandupdatedautomatically.意图:
- 【算法训练营Day12】二叉树part2
十八岁讨厌编程
算法训练营算法
文章目录翻转二叉树对称二叉树二叉树的最大深度二叉树的最小深度翻转二叉树题目链接:226.翻转二叉树解题逻辑:翻转二叉树也就是将所有非叶节点的左右孩子相互交换,那么我们就可以采用层序遍历判断非叶节点进行翻转:初始化一个辅助队列将根节点添加到队列中去弹出队头元素如果该元素的两个子节点均不为null则翻转两个子节点然后将子节点入队如此循环往复直到队列为空代码如下:classSolution{public
- Redisson实现限流器详解:从原理到实践
源末coco
单片机stm32嵌入式硬件
什么是限流器?限流器(RateLimiter)是一种控制请求频率的机制,用于保护系统免受过多请求的冲击。想象一下,你开了一家餐厅,如果同时涌入1000个客人,厨房肯定忙不过来,这时候就需要"限流"——控制进入餐厅的人数。限流的常见场景//场景1:API接口限流@RestControllerpublicclassUserController{@GetMapping("/api/user/{id}")
- LETTERS------dfs
好好学习。天天编程
dfs
题目链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1212【题目描述】给出一个roe×colroe×col的大写字母矩阵,一开始的位置为左上角,你可以向上下左右四个方向移动,并且不能移向曾经经过的字母。问最多可以经过几个字母。【输入】第一行,输入字母矩阵行数RR和列数SS,1≤R,S≤201≤R,S≤20。接着输出RR行SS列字母矩阵。【输出】
- 力扣 hot100 Day46
qq_51397044
Hot100leetcode算法
199.二叉树的右视图给定一个二叉树的根节点root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。//自己写的classSolution{public:vectorrightSideView(TreeNode*root){vectorresult;if(!root)returnresult;queueq;q.push(root);while(!q.empty()){i
- 力扣 hot100 Day47
qq_51397044
Hot100leetcode数据结构算法
114.二叉树展开为链表给你二叉树的根结点root,请你将它展开为一个单链表:展开后的单链表应该同样使用TreeNode,其中right子指针指向链表中下一个结点,而左子指针始终为null。展开后的单链表应该与二叉树先序遍历顺序相同。//抄的classSolution{public:voidflatten(TreeNode*root){TreeNode*dummy=newTreeNode();Tr
- 力扣 hot100 Day40
qq_51397044
Hot100leetcode算法职场和发展
23.合并K个升序链表给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。//自己写的垃圾classSolution{public:ListNode*mergeKLists(vector&lists){vectorrecord;intn=lists.size();for(inti=0;ival);lists[i]=lists[i]->next;}}if
- Docker报错:No address associated with hostname
longze_7
docker
进入Docker容器终端执行命令检查,在容器内能不能访问到外部容器的接口dockerexec-it/bin/bash不同的docker容器内部互相访问方式,http://容器名:开放的端口号,但是注意互相通信的容器要加入自定义网络而不是默认网络bridge:默认bridge网络:容器间不能用名字互相访问,只能用IP。自定义网络:容器间可以用名字互相访问,Docker自动做了DNS解析。http:/
- day 24 |93.复原IP地址,78.子集,90.子集II
bindloy
算法
93.复原IP地址93.复原IP地址-力扣(LeetCode)classSolution{public:boolvalidNumber(stringsNumber){//“判断是否合格”if(stoi(sNumber)paths;voidrestoreIpAddresses(strings,intstart,stringpath,intdepth){if(start>=s.size()&&dept
- 手撕Spring底层系列之:后置处理器“PostProcessor”
Xxtaoaooo
Spring底层系列java开发语言后端Spring底层源码剖析
人们眼中的天才之所以卓越非凡,并非天资超人一等而是付出了持续不断的努力。1万小时的锤炼是任何人从平凡变成超凡的必要条件。————马尔科姆·格拉德威目录一、后置处理器的概念1.1核心定义1.2两大核心对比1.3设计价值二、Bean生命周期扩展时机2.1执行步骤与实例化体现三、内置后置处理器解析3.1五大核心处理器职责3.2AOP代理创建流程四、总结嗨,我是Xxtaoaooo!本系列将用源码解剖+拆分
- 力扣 hot100 Day48
qq_51397044
Hot100算法数据结构
35.搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为O(logn)的算法。//自己写的classSolution{public:intsearchInsert(vector&nums,inttarget){intleft=0;intright=nums.size()-1;while(left
- [Vue warn]: onUnmounted is called when there is no active component instance to be associated with
扬帆起航&d
vue.jsjavascript前端ecmascript前端框架
[Vuewarn]:onUnmountediscalledwhenthereisnoactivecomponentinstancetobeassociatedwith.LifecycleinjectionAPIscanonlybeusedduringexecutionofsetup().Ifyouareusingasyncsetup(),makesuretoregisterlifecyclehoo
- 剑指offer-12、数值的整数次方
java
题⽬描述给定⼀个double类型的浮点数base和int类型的整数exponent。求base的exponent次⽅。保证base和exponent不同时为0。示例1:输⼊:2.00000,3返回值:8.00000示例2:输⼊:2.10000,3返回值:9.26100思路及解答暴力求解如果使⽤暴⼒解答,那么就是不断相乘,对于负数⽽⾔,则是相除,并且符号取反。publicclassSolution{
- leetcode_27 移除元素
_不会dp不改名_
#双指针leetcode算法职场和发展
1.题意给定一个数组,把不等于val的元素全部移动到数组的前面来。不需要考虑值为val里的元素。2.题解2.1同向双指针我们利用双指针,慢指针指向下一个插入的位置。而快指针不断向前找到首个不为val的值,找到后将快指针位置值赋给慢指针位置,慢指针右移。当快指针遍历完整个数组时,过程结束。classSolution{public:intremoveElement(vector&nums,intval
- mac m1安装大模型工具vllm
liliangcsdn
macos
1更新系统环境参考vllm官网文档,vllm对applem1平台macos,xcoder,clang有如下要求OS:macOSSonomaorlaterSDK:XCode15.4orlaterwithCommandLineToolsCompiler:AppleClang>=15.0.0在AppStore更新macOS和XCoder,依据XCoder版本号安装commandlinetools。htt
- JAVA基础
灵静志远
位运算加载Date字符串池覆盖
一、类的初始化顺序
1 (静态变量,静态代码块)-->(变量,初始化块)--> 构造器
同一括号里的,根据它们在程序中的顺序来决定。上面所述是同一类中。如果是继承的情况,那就在父类到子类交替初始化。
二、String
1 String a = "abc";
JAVA虚拟机首先在字符串池中查找是否已经存在了值为"abc"的对象,根
- keepalived实现redis主从高可用
bylijinnan
redis
方案说明
两台机器(称为A和B),以统一的VIP对外提供服务
1.正常情况下,A和B都启动,B会把A的数据同步过来(B is slave of A)
2.当A挂了后,VIP漂移到B;B的keepalived 通知redis 执行:slaveof no one,由B提供服务
3.当A起来后,VIP不切换,仍在B上面;而A的keepalived 通知redis 执行slaveof B,开始
- java文件操作大全
0624chenhong
java
最近在博客园看到一篇比较全面的文件操作文章,转过来留着。
http://www.cnblogs.com/zhuocheng/archive/2011/12/12/2285290.html
转自http://blog.sina.com.cn/s/blog_4a9f789a0100ik3p.html
一.获得控制台用户输入的信息
&nbs
- android学习任务
不懂事的小屁孩
工作
任务
完成情况 搞清楚带箭头的pupupwindows和不带的使用 已完成 熟练使用pupupwindows和alertdialog,并搞清楚两者的区别 已完成 熟练使用android的线程handler,并敲示例代码 进行中 了解游戏2048的流程,并完成其代码工作 进行中-差几个actionbar 研究一下android的动画效果,写一个实例 已完成 复习fragem
- zoom.js
换个号韩国红果果
oom
它的基于bootstrap 的
https://raw.github.com/twbs/bootstrap/master/js/transition.js transition.js模块引用顺序
<link rel="stylesheet" href="style/zoom.css">
<script src=&q
- 详解Oracle云操作系统Solaris 11.2
蓝儿唯美
Solaris
当Oracle发布Solaris 11时,它将自己的操作系统称为第一个面向云的操作系统。Oracle在发布Solaris 11.2时继续它以云为中心的基调。但是,这些说法没有告诉我们为什么Solaris是配得上云的。幸好,我们不需要等太久。Solaris11.2有4个重要的技术可以在一个有效的云实现中发挥重要作用:OpenStack、内核域、统一存档(UA)和弹性虚拟交换(EVS)。
- spring学习——springmvc(一)
a-john
springMVC
Spring MVC基于模型-视图-控制器(Model-View-Controller,MVC)实现,能够帮助我们构建像Spring框架那样灵活和松耦合的Web应用程序。
1,跟踪Spring MVC的请求
请求的第一站是Spring的DispatcherServlet。与大多数基于Java的Web框架一样,Spring MVC所有的请求都会通过一个前端控制器Servlet。前
- hdu4342 History repeat itself-------多校联合五
aijuans
数论
水题就不多说什么了。
#include<iostream>#include<cstdlib>#include<stdio.h>#define ll __int64using namespace std;int main(){ int t; ll n; scanf("%d",&t); while(t--)
- EJB和javabean的区别
asia007
beanejb
EJB不是一般的JavaBean,EJB是企业级JavaBean,EJB一共分为3种,实体Bean,消息Bean,会话Bean,书写EJB是需要遵循一定的规范的,具体规范你可以参考相关的资料.另外,要运行EJB,你需要相应的EJB容器,比如Weblogic,Jboss等,而JavaBean不需要,只需要安装Tomcat就可以了
1.EJB用于服务端应用开发, 而JavaBeans
- Struts的action和Result总结
百合不是茶
strutsAction配置Result配置
一:Action的配置详解:
下面是一个Struts中一个空的Struts.xml的配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
&quo
- 如何带好自已的团队
bijian1013
项目管理团队管理团队
在网上看到博客"
怎么才能让团队成员好好干活"的评论,觉得写的比较好。 原文如下: 我做团队管理有几年了吧,我和你分享一下我认为带好团队的几点:
1.诚信
对团队内成员,无论是技术研究、交流、问题探讨,要尽可能的保持一种诚信的态度,用心去做好,你的团队会感觉得到。 2.努力提
- Java代码混淆工具
sunjing
ProGuard
Open Source Obfuscators
ProGuard
http://java-source.net/open-source/obfuscators/proguardProGuard is a free Java class file shrinker and obfuscator. It can detect and remove unused classes, fields, m
- 【Redis三】基于Redis sentinel的自动failover主从复制
bit1129
redis
在第二篇中使用2.8.17搭建了主从复制,但是它存在Master单点问题,为了解决这个问题,Redis从2.6开始引入sentinel,用于监控和管理Redis的主从复制环境,进行自动failover,即Master挂了后,sentinel自动从从服务器选出一个Master使主从复制集群仍然可以工作,如果Master醒来再次加入集群,只能以从服务器的形式工作。
什么是Sentine
- 使用代理实现Hibernate Dao层自动事务
白糖_
DAOspringAOP框架Hibernate
都说spring利用AOP实现自动事务处理机制非常好,但在只有hibernate这个框架情况下,我们开启session、管理事务就往往很麻烦。
public void save(Object obj){
Session session = this.getSession();
Transaction tran = session.beginTransaction();
try
- maven3实战读书笔记
braveCS
maven3
Maven简介
是什么?
Is a software project management and comprehension tool.项目管理工具
是基于POM概念(工程对象模型)
[设计重复、编码重复、文档重复、构建重复,maven最大化消除了构建的重复]
[与XP:简单、交流与反馈;测试驱动开发、十分钟构建、持续集成、富有信息的工作区]
功能:
- 编程之美-子数组的最大乘积
bylijinnan
编程之美
public class MaxProduct {
/**
* 编程之美 子数组的最大乘积
* 题目: 给定一个长度为N的整数数组,只允许使用乘法,不能用除法,计算任意N-1个数的组合中乘积中最大的一组,并写出算法的时间复杂度。
* 以下程序对应书上两种方法,求得“乘积中最大的一组”的乘积——都是有溢出的可能的。
* 但按题目的意思,是要求得这个子数组,而不
- 读书笔记-2
chengxuyuancsdn
读书笔记
1、反射
2、oracle年-月-日 时-分-秒
3、oracle创建有参、无参函数
4、oracle行转列
5、Struts2拦截器
6、Filter过滤器(web.xml)
1、反射
(1)检查类的结构
在java.lang.reflect包里有3个类Field,Method,Constructor分别用于描述类的域、方法和构造器。
2、oracle年月日时分秒
s
- [求学与房地产]慎重选择IT培训学校
comsci
it
关于培训学校的教学和教师的问题,我们就不讨论了,我主要关心的是这个问题
培训学校的教学楼和宿舍的环境和稳定性问题
我们大家都知道,房子是一个比较昂贵的东西,特别是那种能够当教室的房子...
&nb
- RMAN配置中通道(CHANNEL)相关参数 PARALLELISM 、FILESPERSET的关系
daizj
oraclermanfilespersetPARALLELISM
RMAN配置中通道(CHANNEL)相关参数 PARALLELISM 、FILESPERSET的关系 转
PARALLELISM ---
我们还可以通过parallelism参数来指定同时"自动"创建多少个通道:
RMAN > configure device type disk parallelism 3 ;
表示启动三个通道,可以加快备份恢复的速度。
- 简单排序:冒泡排序
dieslrae
冒泡排序
public void bubbleSort(int[] array){
for(int i=1;i<array.length;i++){
for(int k=0;k<array.length-i;k++){
if(array[k] > array[k+1]){
- 初二上学期难记单词三
dcj3sjt126com
sciet
concert 音乐会
tonight 今晚
famous 有名的;著名的
song 歌曲
thousand 千
accident 事故;灾难
careless 粗心的,大意的
break 折断;断裂;破碎
heart 心(脏)
happen 偶尔发生,碰巧
tourist 旅游者;观光者
science (自然)科学
marry 结婚
subject 题目;
- I.安装Memcahce 1. 安装依赖包libevent Memcache需要安装libevent,所以安装前可能需要执行 Shell代码 收藏代码
dcj3sjt126com
redis
wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make
前面3步应该没有问题,主要的问题是执行make的时候,出现了异常。
异常一:
make[2]: cc: Command not found
异常原因:没有安装g
- 并发容器
shuizhaosi888
并发容器
通过并发容器来改善同步容器的性能,同步容器将所有对容器状态的访问都串行化,来实现线程安全,这种方式严重降低并发性,当多个线程访问时,吞吐量严重降低。
并发容器ConcurrentHashMap
替代同步基于散列的Map,通过Lock控制。
&nb
- Spring Security(12)——Remember-Me功能
234390216
Spring SecurityRemember Me记住我
Remember-Me功能
目录
1.1 概述
1.2 基于简单加密token的方法
1.3 基于持久化token的方法
1.4 Remember-Me相关接口和实现
- 位运算
焦志广
位运算
一、位运算符C语言提供了六种位运算符:
& 按位与
| 按位或
^ 按位异或
~ 取反
<< 左移
>> 右移
1. 按位与运算 按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。
例如:9&am
- nodejs 数据库连接 mongodb mysql
liguangsong
mongodbmysqlnode数据库连接
1.mysql 连接
package.json中dependencies加入
"mysql":"~2.7.0"
执行 npm install
在config 下创建文件 database.js
- java动态编译
olive6615
javaHotSpotjvm动态编译
在HotSpot虚拟机中,有两个技术是至关重要的,即动态编译(Dynamic compilation)和Profiling。
HotSpot是如何动态编译Javad的bytecode呢?Java bytecode是以解释方式被load到虚拟机的。HotSpot里有一个运行监视器,即Profile Monitor,专门监视
- Storm0.9.5的集群部署配置优化
roadrunners
优化storm.yaml
nimbus结点配置(storm.yaml)信息:
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional inf
- 101个MySQL 的调节和优化的提示
tomcat_oracle
mysql
1. 拥有足够的物理内存来把整个InnoDB文件加载到内存中——在内存中访问文件时的速度要比在硬盘中访问时快的多。 2. 不惜一切代价避免使用Swap交换分区 – 交换时是从硬盘读取的,它的速度很慢。 3. 使用电池供电的RAM(注:RAM即随机存储器)。 4. 使用高级的RAID(注:Redundant Arrays of Inexpensive Disks,即磁盘阵列
- zoj 3829 Known Notation(贪心)
阿尔萨斯
ZOJ
题目链接:zoj 3829 Known Notation
题目大意:给定一个不完整的后缀表达式,要求有2种不同操作,用尽量少的操作使得表达式完整。
解题思路:贪心,数字的个数要要保证比∗的个数多1,不够的话优先补在开头是最优的。然后遍历一遍字符串,碰到数字+1,碰到∗-1,保证数字的个数大于等1,如果不够减的话,可以和最后面的一个数字交换位置(用栈维护十分方便),因为添加和交换代价都是1