题解 | #矩阵乘法计算量估算#

矩阵乘法计算量估算

https://www.nowcoder.com/practice/15e41630514445719a942e004edc0a5b

总体没有特别需要解释的。

比较在意的一点:如果出现(A(ABC)D),类似这种一个括号里有超过2个矩阵的例子,应该如何计算。

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner scan=new Scanner(System.in);
        int n=scan.nextInt();
        int[][] matrix=new int[n][2];//储存矩阵内容
        for(int i=0;i<n;i++){
            matrix[i][0]=scan.nextInt();
            matrix[i][1]=scan.nextInt();
        }
        String input=scan.next();//输入的计算法则

        //输出结果
        System.out.println(solve(matrix,input));
    }

    //解决方案
    public static int solve(int[][] matrix, String input){
        int sum=0;
        Stack<Integer> stack=new Stack<>();//储存参与运算的矩阵
        for(int i=0;i<input.length();i++){
            char item=input.charAt(i);
            int location=item-'A';
            //如果字符为字母,则将该字母对应矩阵内容放入栈中,并记录存储了1个矩阵
            if(item<='Z' && item>='A'){
                stack.push(matrix[location][0]);
                stack.push(matrix[location][1]);
            }else if(item==')'){//如果字符为“)”,则表示第一个括号结束,可以开始计算
                    int y1=stack.pop();
                    int x1=stack.pop();
                    int y0=stack.pop();
                    int x0=stack.pop();
                    //计算乘法次数,并加入sum
                    sum+=x0*y0*y1;
                    //将新得到的矩阵放入栈中
                    stack.push(x0);
                    stack.push(y1);
            }else if(item=='('){
                continue;
            }
            
        }
        return sum;
    }
}

全部评论

相关推荐

点赞 评论 收藏
分享
头像
03-03 13:17
已编辑
苏州大学 Java
面试官真的很有耐心,人非常nice,但问得也是真的很细。面完半小后约HR面。有没有人说说HR面会问啥?【希望能过吧,以前真没想到面个试这么耗精力,这一周感觉都被掏空了】1.请做一下自我介绍。2.你掌握的数据结构有哪些?3.请讲一下一致性哈希的原理和解决的问题。4.请讲一下Ring&nbsp;buffer(环形缓冲区)的相关内容。5.请讲解一下HTTP状态码的相关分类和含义(如2xx、3xx、4xx、5xx)。6.请讲解一下四层网络负载均衡和七层网络负载均衡的区别,以及各自的应用场景。7.请讲一下反向代理的原理和常用工具,以及正向代理的相关内容。8.进程间通信的方式有哪些?哪种方式效率更高,为什么?9.请讲一下MySQL主从复制的实现原理(基于binlog、redolog相关)。10.多个从节点之间出现数据不一致的问题该如何解决?11.你了解的消息中间件有哪些?RabbitMQ、RocketMQ、Kafka这三种消息中间件的区别是什么?12.Redis中最常用的数据结构有哪些?13.请讲一下Redis中Zset(sorted&nbsp;set)的底层实现和优化策略。14.什么是小哈希和大哈希,二者在查找、插入性能上有什么区别?15.请讲一下TCC分布式事务算法的相关内容,以及它和2PC、3PC的区别。16.你在项目中使用的服务发现组件是什么,它的实现原理是什么?17.你在项目中使用的序列化协议是什么,为什么选择该协议?18.长连接的适用场景是什么?哪些场景不适合使用长连接,原因是什么?19.请设计一个评论系统(包括数据库表设计、数据结构、关联关系等)。20.【反问】想具体知道会做哪些模块的工作?有没有导师?
百特曼3:节子还是一如既往的八股大厂
查看78道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务