`
sinokaka
  • 浏览: 325544 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

华为java题后续(2)

    博客分类:
  • java
阅读更多
         这两天总是在琢磨这个java题,看起来比较简单,而且看起来好像比较轻松,并且引诱着一些方案的可能性,给人的直观好像简单了一些,实际上却不是这样,很喜欢这种题目。说说我想解决的办法吧,我想解释成一个树的解构。
比如:1+2*4/2+6
 
             +
           /    \
         +       6
      /     \
    1       /
          /    \
        *      2
      /   \
     2    4
 
这样的一个树的解构,这样做的时候,只需要左节点操作符右节点就可以了,这样也是一个递归就可以。 当我真正的实现一个数的时候,却发现做出来这样一个树并不是那么简单,添加一个节点非大即小,或者相等,数字不可能那么平衡的分到两端去,当然了,做一个特殊的树完全可以的,可是总觉得不是很完美。
 
第二个解决方案想的是用一个组合模式Leaf节点就是个个数字,组合呢,就是Leaf+操作符+Leaf做一个基本组合,大的就是Composite + 操作符+Composite。这样就是还是一个递归了。调用一个getValue就可以了,Leaf返回的就是Value数字,结点返回的就是Composite + 操作符+Composite。就这样就可以了。可是做来作去的,发现还不是一个完美的组合模式,也是一个特殊的组合。
自己的一些事例代码,没有什么实际意义
public interface IComposite {
    public int getValue();
    public void addLeft(IComposite leaf);
    public boolean isLeaf();
    public void addRight(IComposite leaf);
}
 
public class Composite implements IComposite{
    private IComposite left;
    private IComposite right;
   
    private String operator;
   
    public Composite(IComposite va, IComposite vb, String operator) {
        super();
        this.left = va;
        this.right = vb;
        this.operator = operator;
    }
 
    public int getValue() {
        if (operator.equals("+")) {
            return left.getValue() + right.getValue();
        }
        if (operator.equals("*")) {
            return left.getValue() * right.getValue();
        }
        if (operator.equals("/")) {
            return left.getValue() / right.getValue();
        }
        if (operator.equals("-")) {
            return left.getValue()- right.getValue();
        }
        return 0;
    }
}
 
 
这两个解决方案是我最直观的解决方法,最后却都放弃了,只是用了递归解决的,用递归也是因为以前看得一本书SCIP给我的一点提示,那本书说实在的,很久没有踏心下认真地看书了,或者说非理论的书了。现在是就喜欢看一些虚的,理论化的书,说起来一套一套的,做的时候,却一头雾水。那本SCIP实践性太强了,所以没有看完,确实遗憾的很,因为那本书给的启发很多,让一个人去考虑很多东西。
  
分享到:
评论

相关推荐

    华为的java面试题(27页版).pdf

    华为的Java面试题涵盖了基础语法、类与对象、多态性、访问修饰符、继承、内嵌类、Servlet生命周期以及循环控制等多个核心知识点。让我们逐一解析: 1. 题目1涉及字符串对象的不可变性。在Java中,String是不可变...

    华为java编程军规

    华为 Java 编程军规 华为 Java 编程军规是衡量代码本身的缺陷,也是衡量一个研发人员本身的价值。该军规共十条,涵盖了编程中的各种细节,旨在提高代码的可读性、可维护性和可靠性。 军规一:避免在程序中使用魔鬼...

    华为Java认证题.docx

    Java编程语言在华为的认证考试中占有重要地位,这些题目主要涵盖了Java的基础语法、流程控制以及数据类型等方面的知识。下面是对这些题目所涉及知识点的详细解释: 1. **switch语句**:Java中的switch语句支持byte,...

    华为-华为od题库练习题之字符串分隔.zip

    【标题】"华为-华为od题库练习题之字符串分隔.zip" 提供的资源是华为OD(Organizational Development,组织发展)题库中的一个专项练习,主要关注字符串处理技术。这个压缩包可能包含了多个练习题目,旨在帮助学习者...

    java华为面试题 集锦

    ### Java华为面试题集锦详解 #### 一、面向对象的特征 面向对象编程(OOP)的核心特征主要包括:封装、继承、多态。 1. **封装**:将数据和操作这些数据的方法绑定在一起,形成一个整体,即类。通过封装隐藏了对象...

    华为面试题

    在华为的面试中,Java相关的面试题主要集中在JSP和Servlet这两个关键领域。下面将详细介绍这些知识点。 1. **JSP 内置对象**: - `request`:代表客户端的请求,可以获取GET或POST请求中的参数。 - `response`:...

    Java语言编程规范--华为技术有限公司

    Java语言编程规范是软件开发中不可或缺的一部分,尤其在大型企业如华为技术有限公司中,遵循统一的编程规范至关重要。这样的规范确保了代码的质量、可读性、可维护性和团队协作的效率。以下是对“Java语言编程规范--...

    华为笔试上机题答案苏州和南京地区

    1. **华为笔试题型**:华为的笔试通常包括选择题、填空题和编程题,涵盖C/C++、Java、Python等编程语言,操作系统原理,数据结构,算法,网络,数据库等方面的知识。 2. **编程基础**:掌握至少一种编程语言的基本...

    华为软件及硬件面试题

    根据提供的华为软件及硬件面试题的信息,我们可以从中提炼出几个重要的知识点,主要集中在Java Servlet、数据结构、C/C++语言特性以及计算机网络等方面。 ### 1. Java Servlet基础 **知识点1:Servlet生命周期** -...

    华为软件详细设计模板.doc

    【华为软件详细设计模板】是华为公司在软件开发过程中使用的一种标准化文档模板,旨在规范软件的详细设计过程,确保设计质量并提高开发效率。该模板详细规定了设计文档的各个组成部分和格式,帮助开发者清晰地表达...

    华为 java 安全 编码 规范 安全篇 2.0

    #### 规则5.6:避免完全依赖`URLClassLoader`和`java.util.jar`提供的默认自动签名认证机制 **要点**:不要完全依赖默认的签名认证机制。 **解释**:默认机制可能存在安全漏洞。 **实施策略**: - **增强验证**:...

    华为应届生培训大富翁游戏及考试题目

    对于开发者来说,实现这样的游戏需要掌握基本的编程语言(如Python或Java),理解面向对象编程,熟悉游戏循环机制,以及如何处理用户输入和游戏状态的更新。此外,游戏中的随机事件可能涉及到随机数生成和概率计算,...

    java代码cmpp 2.0简单示例绝对可用

    3. 服务器响应:服务器处理提交请求并返回CMPP_SUBMIT_RESP,包含消息ID等信息,用于后续的查询或状态报告。 接收短信(CMPP_DELIVER)则是被动的,服务器会在有新短信到达时主动推送CMPP_DELIVER消息给SP,SP端...

    华为笔试题java-cntt2016-hw1:cntt2016-hw1

    华为笔试题java IOI2017 中国国家集训队第一次作业 注意:本页有关作业和分数构成的内容禁止集训队员更改。 分数构成 今年的国家队选拔分数构成和去年相同,具体如下: 集中训练:4天,每天组织一次考试,按标准分计...

    2023华为od机试真题猜字谜

    题目来自2023年华为OD(Online Judge)机试真题,属于教育/考试类,具体是猜字谜游戏的逻辑实现。下面将详细解释相关知识点: 1. **字符串操作**: - **字符串分割**:题目中使用了`split(",")`方法将输入的字符串...

    华为代码规范

    **华为代码规范** 在软件开发领域,代码规范是确保代码质量、可读性和可维护性的...华为的代码规范不仅关注代码的书写风格,还注重代码的可读性、可维护性和性能优化,这为开发高质量的Java应用程序奠定了坚实基础。

    华为面试题附答案Oracle-DBA数据库管理员JAVA程序员架构师必看.docx

    8. **DECODE函数**:DECODE函数用于在SQL查询中进行条件判断和返回值,如果给定的值与第一个参数匹配,它返回第二个参数,否则,根据后续的条件返回相应的值。可以用来简化条件语句,并支持在某些情况下替代CASE...

    华为的考试,代码坚定,不错

    6. 关闭服务器与回收试卷:13:30后,考试服务器关闭,监考人员回收纸质试卷,进行后续核对工作。 二、考试软件异常处理 1. 遇到软件死机、蓝屏、黑屏或注册失败,考生应重启电脑,再次启动考试软件,并记录异常...

    华为内部招聘面试题

    根据给定文件的信息,我们可以提炼出以下IT领域的关键知识点,主要围绕Java编程语言及Web开发技术,特别是与华为内部招聘面试题相关的知识点进行详细解析。 ### Java基础:对象引用与字符串不可变性 **知识点一:...

    1到3年经验 java面试题(360,华为,阿里收集)

    - **NIO编程**:NIO(New IO)是Java SE 1.4及后续版本中的新特性,提供了一种不同于传统BIO(Blocking IO)的I/O处理方式,更适合高并发场景。 - **Linux系统管理**:掌握基本的Linux命令,如查看CPU和内存使用情况...

Global site tag (gtag.js) - Google Analytics