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。这道题目不是很理解题意,给的例子为什么都是只有一个字母不一样的情况。

  • 相关阅读:
    今天做了个小项目
    了解类与对象
    装机时键盘选择失误?教你修改kali Linux键盘到美式。
    一些模塊的用法
    你也是全员模块?
    金额保留2位小数 xx.00
    maven项目统一管理版本
    启动项目报错——找不到或无法加载主类 io.vertx.core.Launcher
    以jar包方式启动
    支付业务接口功能(二)
  • 原文地址:https://www.cnblogs.com/seven7seven/p/3942225.html
Copyright © 2011-2022 走看看