• 解决面试题的思路


    很多面试官都喜欢应聘者在写代码之前先讲清楚思路,举例子和画图都是很好的方法

    面试官希望应聘者在分析中发现自己想法中的错误和漏洞。

    面试题19:二叉树的镜像

    View Code

    面试题20:顺时针打印矩阵

    输入一个矩阵,从外向里以顺时针的顺序依次打印出每个数字

    每打印一圈的起始点选为对角线上的点,即此时x = y

    判断循环继续的条件是columns > 2 * start 并且 rows > 2 * start

    注意最后一圈的情况可能会退化为一行、一列、甚至是只有一个数字

    View Code

    面试题21:包含min函数的栈

    题目:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。

    利用一个辅助栈始终记录数据栈当前的最小值。

    View Code

    断言包含assert.h文件

    断言语句示例(括号内是true的语句,若为false出错)

    assert(m_data.size() > 0 && m_min.size() > 0);

    面试题22:栈的压入弹出序列

     题目:输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。

    分析:这里的压入弹出不是一次性完成的,比如输入的push序列是1、2、3、4、5,那么4、5、3、2、1就有可能是一个pop系列

    写函数第一步一定要要先判断非法输入 指针是否为NULL 长度大于0等等。!!!

    因为const、&等的运用可以加分,所以要记得,特别是形参部分的&和const

    View Code

    这是我自己写的,没看源码

    面试题23:从上往下遍历二叉树

     题目:输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。

    典型的层序遍历,利用先进先出的队列,一次从后面放入待处理的数据,在前面取出数据进行处理

    View Code

     不管是广度优先遍历一个有向图还是一棵树,都要用到队列。第一步把其实节点(在树中是指根节点)放入到队列中,接下来每一次从队列头部取出一个节点,遍历这个节点之后把从它能到达的节点(対树而言是子节点)都依次放入队列。我们重复这个遍历过程,直到队列中的节点全部都被遍历为止。

    面试题24:二叉搜索树的后续遍历序列

    这题省略

    面试题26:复杂链表的赋值

    1. 可以利用空间换时间,建立哈希表,把<S,S’>映射到哈希表上,就可以方便地找到m_pSibling指针的指向。空间和时间复杂度均为O(n)。
    2. 亮点在于一开始节点创建时的不同,N点对应的N’点是直接连接在N点之后的,那么要找的N’的m_pSibling指向的对象就是N的m_pSibling指向的对象的下一个。

      

    View Code

    面试题27:二叉搜索树和双向链表

      首先我们可以发现中序遍历的最后一个节点就是这棵树中的最大值。主要是用递归的思想,先排好左子树,然后是根节点,然后再去排右子树。

      

    面试题28:字符串的排列

    输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。

    考查对递归理解的编程题

    View Code

    如果要做到相同的字符串只输出一次,则只要在交换之前判断一下是否交换即可,相同则不交换。

      if(pBegin != pTemp && *pBegin == *pTemp)  //添加在for循环里面的第一句
        continue;

    理论上相同的字符相同的位置只能算一次的才叫排列,即121、211、112构成3个排列,这里面只有一个组合。

    那么要求字符串的组合

    桶排序一下,递归输出,如果有3个a就有0、1、2、3四种方式;如果所有字符确定是不同的那么用ab = 110, c = 001, abc = 111,二进制表示选择情况(a就只有有或者没有两种情况)

    求8个数的组合,然后相加判断三个对面的各是否相等即可

    求不相同的排列情况,判断是否符合条件,先画一个正方体,有利于理解对面的概念。

      

    棋子排列问题

      

    全排列可以确定不在一行一列上,最后两个式子确定不在对角线上

  • 相关阅读:
    springboot整合Quartz框架
    安装 和 配置 HBase
    HBase 安装之后版本的验证的bug:(错误的替换、找不到或无法加载主类、SLF4J)
    HBase基本知识和应用场景
    修改idea的临时数据存放目录(默认保存在C盘用户目录下的.IntelliJIdea2020.3)
    Eclipse中格式化代码快捷键Ctrl+Shift+F失效的解决办法(关于快捷键失效原因可能是与输入法的快捷键冲突)
    参考大数据厦门大学林子雨编著的《大数据技术原理与应用(第3版)》中第三课《HDFS编程实践(Hadoop3.1.3)》遇到的bug
    框架设计思维符合语义即可使用,而不用关心底层的实现
    Ubuntu下无法输入中文问题解决
    HDFS编程实践(Hadoop3.1.3)
  • 原文地址:https://www.cnblogs.com/zsq1993/p/5985190.html
Copyright © 2020-2023  润新知