zoukankan      html  css  js  c++  java
  • 设计数据结构O1 insert delete和getRandom

    设计一个数据结构满足O(1)的insert, delete和getRandom。这个是从地里Amazon的面经中看到的。

    我们可以使用一个resizable数组arr以及一个HashMap来完成。

    insert(value): 将value加入到数组中,然后将<value, index> pair放到hashmap里

    delete(value):  交换value和数组末端元素交换,从hashmap里去除掉value,然后减少当前数组的长度count。

    getRandom():先用Math.random()得到一个0 - count的随机数r,然后直接返回数组里的值arr[r]

    这里的O(1)应该指的是average time。怎么处理重复的key是个小问题,可能要用一个set或者LinkedList来存储相同value的不同index,跟HashMap遇到collision的解决方法一样。

    Reference:

    http://www.geeksforgeeks.org/design-a-data-structure-that-supports-insert-delete-search-and-getrandom-in-constant-time/

    http://puzzlersworld.com/interview-questions/ds-with-insert-delete-and-getrandomelement-in-o1/

    http://stackoverflow.com/questions/5682218/data-structure-insert-remove-contains-get-random-element-all-at-o1

  • 相关阅读:
    webform传值
    webform控件以及使用
    SQL Server 基本数据类型
    数据库设计三大范式
    第一阶段考试
    弹出层
    三级联动日期选择
    DOM例题
    JS方法
    DOM
  • 原文地址:https://www.cnblogs.com/yrbbest/p/5256678.html
Copyright © 2011-2022 走看看