zoukankan      html  css  js  c++  java
  • 三道面试题

      今天参加面试(公司保密吧~),主要是算法,下面整理一下。

      题目1:字符串str2中的字符是否在字符串str1中都存在?(开始问的是str1是否包含str2子串,我回答用KMP算法)

      思路一:toCharArray之后,依次找,复杂度O(nm),面试官当然不满意,我貌似也知道这个算法不会被满意,但是还是第一时间说出来了。

      思路二:面试官提醒我说字符串中的字符都是有ASIC码的,是一定范围内的。我恍然大悟,可以设置一个数组存储,数组大小为字符的ASIC码范围。

          将str1的字符依次放入数组,(对一定范围内的大数据排序就是这么做的,即Hash算法)。因为这里只是查找,我们只需要在数组中存储1和0,分别表示str1含有这个字符,或不包含这个字符即可。这样完成str1的扫描需要O(n)。

          str2中的每个元素只需要O(1)的时间复杂度就可以查看到str1中是否包含它,因为用了Hash。

          这样算法的时间复杂度为O(n+m),但是需要辅助空间。

      题目2:大数据排序

      之前问的是大数据找到最小的10个数,这个就是维持一个最小堆就可以。

      后来问的大数据排序,我的回答是类似于归并排序的那种,可又不是归并,因为归并用的辅助空间比较大,大数据内存装不下。

      利用“分而治之”的思想,只能是一部分一部分的排,之后将每一部分保存起来,再相互比较着排,这样显然效率很低,但我实在没想出其他办法来。==!

      题目3:这个是笔试,两个字符串之间的差距,比如abc和abd差1,art和arw差3。这道题目不是很理解题意,给的例子为什么都是只有一个字母不一样的情况。

  • 相关阅读:
    Altium_Designer-原理图库如何添加低电平有效的管脚?
    Altium_Designer-怎么将“原理图的更改”更新到“pcb图”?
    Altium_Designer-各种布线总结
    Altium_Designer-PCB中各层作用详解
    AD的命名规则 AD常用产品型号命名规则
    Altium_Designer如何快速寻找元件和封装
    Makedown语法说明
    使用Atom编写Makedown
    Vim基本命令
    Python-Django框架学习笔记——第二课:Django的搭建
  • 原文地址:https://www.cnblogs.com/seven7seven/p/3942225.html
Copyright © 2011-2022 走看看