• 2015年腾讯软开笔试


    题目:1亿个QQ号存在set和vector两个容器当中,请你剔除个位数为奇数的QQ号码。

    问题分解:

    问题一:QQ号用什么类型存储?

    问题二:vector 最好不删除中间元素?

    问题三:set是由红黑树实现的,插入,删除操作对效率的影响大吗?

    问题一分析:

    unsigned int 在32位机中最大存储数为2^32 - 1 = 4294967295,大概43亿,假设题目中的1亿号码都在0~4294967295这个范围内。

    计算1亿个号码,以unsigned int存储,需要占用多大的内存空间:

    10^8 * 4 byte = 381.469M,空间不大,不成什么问题!

    问题二分析:

    vector是动态数组,不适于频繁插入和删除,因此,不便于在原有的vector上做删除操作;

    问题三分析:

    set 的key和value都是同一个;

    set不能修改原值,只能删除后再插入,所以迭代器都是const的;

    set的插入、删除操作是O(logN)复杂度。

  • 相关阅读:
    spring(1)
    mybatis(7)自定义结果集(一对多/多对一)
    延迟加载
    《构建之法》阅读笔记03
    http socket
    转换
    .net后台通过xmlhttp 和远程服务通讯
    XMLHttpRequest介绍
    js 贪吃蛇
    触发器
  • 原文地址:https://www.cnblogs.com/wiessharling/p/4377436.html
Copyright © 2020-2023  润新知