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

网站建设综合技术中国官网查询系统

网站建设综合技术,中国官网查询系统,建站网站建设,网站建设岗位的简介提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣380. O(1) 时间插入、删除和获取随机元素二、力扣710. 黑名单中的随机数 前言 常数时间删除-查找数组中的任意元素,且随机访问概率一致 如果…

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、力扣380. O(1) 时间插入、删除和获取随机元素
  • 二、力扣710. 黑名单中的随机数


前言


常数时间删除-查找数组中的任意元素,且随机访问概率一致
如果想「等概率」且「在 O(1) 的时间」取出元素,一定要满足:底层用数组实现,且数组必须是紧凑的。 这样我们就可以直接生成随机数作为索引,从数组中取出该随机索引对应的元素,作为随机元素。 但如果用数组存储元素的话,插入,删除的时间复杂度怎么可能是 O(1) 呢? 可以做到!对数组尾部进行插入和删除操作不会涉及数据搬移,时间复杂度是 O(1)。 所以,如果我们想在 O(1) 的时间删除数组中的某一个元素 val,可以先把这个元素交换到数组的尾部,然后再 pop 掉。 交换两个元素必须通过索引进行交换对吧,那么我们需要一个哈希表 valToIndex 来记录每个元素值对应的索引。

一、力扣380. O(1) 时间插入、删除和获取随机元素

class RandomizedSet {private List<Integer> nums;private Map<Integer, Integer> valToIndex;public RandomizedSet() {nums = new ArrayList<>();valToIndex = new HashMap<>();}public boolean insert(int val) {if(valToIndex.containsKey(val)){return false;}nums.add(val);valToIndex.put(val,nums.size()-1);return true;}public boolean remove(int val) {if(!valToIndex.containsKey(val)){return false;}int deleteIndex = valToIndex.get(val);int curIndex = nums.size()-1;Collections.swap(nums, deleteIndex, curIndex);valToIndex.put(nums.get(deleteIndex),deleteIndex);nums.remove(nums.size()-1);valToIndex.remove(val);return true;}public int getRandom() {return nums.get((int)(Math.random()*nums.size()));}
}/*** Your RandomizedSet object will be instantiated and called as such:* RandomizedSet obj = new RandomizedSet();* boolean param_1 = obj.insert(val);* boolean param_2 = obj.remove(val);* int param_3 = obj.getRandom();*/

二、力扣710. 黑名单中的随机数

class Solution {int RZ;Map<Integer,Integer> map;public Solution(int n, int[] blacklist) {RZ = n - blacklist.length;map = new HashMap<>();for(int b : blacklist){map.put(b,666);}int last = n-1;for(int b : blacklist){if(b >= RZ){continue;}while(map.containsKey(last)){last --;}map.put(b,last);last --;}}public int pick() {int index = (int)(Math.random()*RZ);if(map.containsKey(index)){return map.get(index);}return index;}
}/*** Your Solution object will be instantiated and called as such:* Solution obj = new Solution(n, blacklist);* int param_1 = obj.pick();*/
http://www.dtcms.com/wzjs/790250.html

相关文章:

  • 东莞桥头网站设计房产手机网站开发
  • 用dw如何做网站首页wordpress 小程序插件
  • 潍坊奎文住房和城乡建设局网站国内大型餐饮网站建设
  • 建设银行网站字体互联网+
  • 番禺做网站企业用dw设计网站模板下载
  • 品牌网站建设要选磐石网络做销售的网站
  • 石狮app网站开发价格wordpress模板修改字体
  • 苏州做网站企业如何做网站的后台管理
  • 温州企业网站制作腾讯推广联盟
  • 电子上网站建设与维护网站开发合同履约
  • wordpress ses插件宁波seo营销
  • 免费一级域名注册网站iis 建设网站
  • 帮人做彩票网站支付接口免费企业宣传片制作软件
  • 东莞 网站 建设 雕塑国税网站建设调查报告
  • 合川网站优化一级a做爰片免费观看 安全网站
  • 澄海建网站网站建设培训 店
  • 纸业公司网站模板源文件视频添加到wordpress
  • 合川网站建设网站推广只能使用在线手段进行
  • 135编辑器 wordpresswordpress 优化标题
  • 让别人做的网站不给源代码社交网站先做pc站可以吗
  • 设计公司网站价格视频软件制作
  • 网站开发实用技术介绍wordpress聊天小工具
  • 郑州营销型网站制作运营中国那个公司的网站做的最好
  • p2p网站如何建设营销型网站解决方案
  • 东莞市网站建设分站企业做网站为什么用php
  • 珠海网站建设建站系统住房建设和城乡管理局官网
  • 网站建设做软件开发吗合肥网站建设案例
  • 美食网站策划书惠州关键词排名优化
  • 怎样建个自己的网站重庆网红打卡景点
  • 宝安高端网站建设公司网页制作基础教程第二版答案