zoukankan      html  css  js  c++  java
  • 面试题以及解答

    题目1:假设淘宝一天有5亿条成交数据,求出销量最高的100个商品并给出算法的时间复杂度。

    这个问题的复杂度在于数据量太大。

    我有几种解决方案

    1:创建大小为100的数组,并初始化(取5亿的前100条,然后排序)。遍历5亿条数据,如果有数据大于数组的最小值,就替换数据里的元素。

    2:创建大小为100的最小堆,并初始化(取5亿的前100条,建立最小堆)。遍历5亿条数据,如果有大于最小值,就用当前值替换最小值,重建堆。

    3:将5亿条数据分为100份,每份取前一百条;然后从上一步的结果里取前100条(采用归并、分而治之思想)

    4:遍历一遍,找到最大值、最小值;然后取阀值m = (max + min)/2;大于阀值的,记录下来(最多记录100条记录,存一个数量n)

       如果n>500,则取阀值为(max + m)/2;如果100<n<500,则选取排序算法,找到前一百即可;若n<100,则取阀值为(m + min)/2

     5:抽样调查法:随机从中取出10组,每组5000条数据;取其前100条;

  • 相关阅读:
    nginx 学习
    java 数组转字符串(以逗号分隔开)
    索引命名规范
    java常见的设计模式
    java中的堆、栈浅解。
    Oracle忘记System密码怎么办?
    端口被占用,怎么解决?
    Spring Mvc学习之路
    svg了解一下
    推荐几款基于vue的使用插件
  • 原文地址:https://www.cnblogs.com/obob-1005742198/p/7500688.html
Copyright © 2011-2022 走看看