当前位置: 首页 > news >正文

centos做网站服务器素材下载网站开发

centos做网站服务器,素材下载网站开发,个人网站icp备案,新城免费做网站题目 设计一个数据结构,使如下3个操作的时间复杂度都是O(1)。 insert(value):如果数据集中不包含一个数值,则把它添加到数据集中。remove(value):如果数据集…

题目

设计一个数据结构,使如下3个操作的时间复杂度都是O(1)。

  • insert(value):如果数据集中不包含一个数值,则把它添加到数据集中。
  • remove(value):如果数据集中包含一个数值,则把它删除。
  • getRandom():随机返回数据集中的一个数值,要求数据集中每个数字被返回的概率都相同。

分析

由于题目要求插入和删除(包括判断数据集中是否包含一个数值)的时间复杂度都是O(1),能够同时满足这些时间效率要求的只有哈希表,因此这个数据结构要用到哈希表。但是如果只用哈希表,则不能等概率地返回其中的每个数值。

如果数值是保存在数组中的,那么很容易实现等概率返回数组中的每个数值。假设数组的长度是n,那么等概率随机生成从0到n-1的一个数字。如果生成的随机数是i,则返回数组中下标为i的数值。由此可以发现,需要结合哈希表和数组的特性来设计这个数据容器。

由于数值保存在数组中,因此需要知道每个数值在数组中的位置,否则在删除的时候就必须顺序扫描整个数组才能找到待删除的数值,那就需要O(n)的时间。通常把每个数值在数组中的位置信息保存到一个HashMap中,HashMap的键是数值,而对应的值为它在数组中的位置。

public class Test {public static void main(String[] args) {RandomizedSet randomizedSet = new RandomizedSet();randomizedSet.insert(1);randomizedSet.insert(2);randomizedSet.insert(3);randomizedSet.insert(4);for (int i = 0; i < randomizedSet.nums.size(); i++) {System.out.println(randomizedSet.nums.get(i));}System.out.println("-----------------------");randomizedSet.remove(2);for (int i = 0; i < randomizedSet.nums.size(); i++) {System.out.println(randomizedSet.nums.get(i));}System.out.println("-----------------------");System.out.println(randomizedSet.getRandom());}static class RandomizedSet {HashMap<Integer, Integer> numToLocation;ArrayList<Integer> nums;public RandomizedSet() {numToLocation = new HashMap<>();nums = new ArrayList<>();}public boolean insert(int val) {if (numToLocation.containsKey(val)) {return false;}numToLocation.put(val, nums.size());nums.add(val);return true;}public boolean remove(int val) {if (!numToLocation.containsKey(val)) {return false;}int location = numToLocation.get(val);numToLocation.put(nums.get(nums.size() - 1), location);numToLocation.remove(val);nums.set(location, nums.get(nums.size() - 1));nums.remove(nums.size() - 1);return true;}public int getRandom() {Random random = new Random();int r = random.nextInt(nums.size());return nums.get(r);}}
}
http://www.yayakq.cn/news/363852/

相关文章:

  • 网站排名优化推广公司app开发软件要多少钱
  • 建设厅科技中心网站wordpress友情链接单页
  • 绵阳网站开发深圳的建站公司
  • 咸阳网站开发公司十大收益最好的自媒体平台
  • 国外销售网站企业网站系统源码
  • 怎么查网站的关键词排名wordpress局域网自定义域名
  • 龙陵县住房和城乡建设局网站网页策划案的范文
  • 玉溪市住房和建设局公布网站如何在自己的电脑上做网站
  • 专业做房地产网站建设企业所得税优惠政策最新2024
  • 上海网站制作哪家奿网站建设公司怎么发展
  • 网站流量不正常国外在线crm系统suitecrm
  • owasp 网站开发知名高端网站设计企业
  • 可以做视频推广的网站吗做网站分页
  • 网站上的公告怎么做参考文献桂林网站建设 腾云
  • 仙桃做网站找谁厚街仿做网站
  • 湖北什么网站建设值得推荐wordpress评论显示游客
  • html5自适应网站源码徐州网站建设方案
  • 西安电子商务网站建设网络规划设计师报考
  • 网上家教网站开发做ic哪些网站好做
  • 湖北营销型网站建设公司上海市网站制作
  • 个人网站怎么做cps哪个网站做ppt
  • seo 网站关键词营销网络分布情况
  • 英文网站seo如何做土豆做视频在线观看网站
  • 可以免费制作网页的网站wordpress 评论 关闭
  • 网站建设的类型南城网站建设公司报价
  • 网站建设完工确认书网站建设制作怎么弄
  • 江西建设厅特殊工种的网站wordpress 建网站 vpn
  • 铜山网站开发万创网做的网站怎么样
  • 网站欢迎页制作做面食专业网站
  • 网站续费通知做外贸网站外包