温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
如果我们想把这些表情反方向排序,但依次只能挪动一张脸,应该怎么办?这儿有一个容器,把第一个放到容器中,接着第二个以此类推,放完之后,这时候就把最上面的弹出来,接着是第二个,以此类推,这样就把这些换的顺序。其实这个容器叫战带,它只有一个口子,所以只能两个操作,一个是压战破,一个是出战炮。虽然只有两个简单的操作,但是我们可以实现更复杂的效果。我们来讲讲两个例子,第一个是检查字符串中的括号是否对上,第二,机器是否高效读取并计算这样的算式。第一个假如现在有一组括号,但是机器只能逐个检查,如果只检查一遍就可以完成,也就时间复杂度是大,N是字符串的长度。现在介入站第一个是左括号,那就助站,也就是所有左。
01:00
括号都这样做,然后第二个也是左括号继续入战,接着同样入战,第四个是右括号,所有右括号都要让站点出战,并和第四个比较,发现配对成功,那么下一个右括号出战也匹配最后的右括号出战,配对成功,检查结束。第二个例子是计算机是如何运行这样的算式呢?我们知道先要计算括号中的算式,那结果和三相乘,最后才和一相加。那么简单的做法就是先扫一遍算式,检查是否有括号,优先计算,接着从头开始检查是否有乘号或除号,最后再次扫描计算加号或减号,这种效率就会比较低。更高效的办法是先转成一个中间态,去掉括号,把运算符放到数字后面,我们把运算符在中间的。
02:00
成为中缀表达式in fix expression,而运算符在后的是后缀表达式post fix expression。那么如何让机器实现转换呢?首先按照规则,所有的数字直接输出,所以扫描的第一个数字输出,接着是加号。第二条规则是预算服优先级高于站内的要入站或战功,所以加号入站,接着是左括号。第三条规则是所有左括号都要入站,所以左括号入站。接下来是数字六,按照第一条也是输出,然后是加号,按照第四条,若站内包含左括号,运算符都入站,所以加号入站。接下来数字二直接输出,然后是右括号。规则五,若是右括号站不断出站,直到碰到左括号,所以出站加号碰到左括号结束,接下来是乘号。
03:00
按照规则,二入战,最后是三输出,最后将战中一一都出战,我们就有了后缀表达式,最后我们再次利用战,凡是数字就压战,凡是运算符就出战,两次进行计算,再将结果压战,最后三野入战,然后是陈号,将占顶两个变成24,最后加合成25结束运算。
我来说两句