博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode 398. Random Pick Index
阅读量:4186 次
发布时间:2019-05-26

本文共 1338 字,大约阅读时间需要 4 分钟。

Given an array of integers with possible duplicates, randomly output the index of a given target number. You can assume that the given target number must exist in the array.

Note:

The array size can be very large. Solution that uses too much extra space will not pass the judge.

Example:

int[] nums = new int[] {1,2,3,3,3};Solution solution = new Solution(nums);// pick(3) should return either index 2, 3, or 4 randomly. Each index should have equal probability of returning.solution.pick(3);// pick(1) should return 0. Since in the array only nums[0] is equal to 1.solution.pick(1);

Accepted

70,723

Submissions

133,199

-----------------------------------------------------------------------------

并不是很喜欢这题的表述,这题的意思应该是说不要对输入nums进行任何操作,或者说nums是个stream,这样用蓄水池算法理所当然,否则每次都遍历一遍有点牵强

import randomclass Solution:    def __init__(self, nums):        self.nums = nums            def pick(self, target):        cnt,res = 0,0        for i,num in enumerate(self.nums):            if (num == target):                cnt += 1                if (cnt == 1):                    res = i                else:                    rdint = random.randint(1, cnt)                    if (rdint == 1):                        res = i        return res# Your Solution object will be instantiated and called as such:# obj = Solution(nums)# param_1 = obj.pick(target)

 

转载地址:http://xtfoi.baihongyu.com/

你可能感兴趣的文章
使用eclipse来调试hadoop作业是非常简洁方便的,
查看>>
配置sqoop的环境变量
查看>>
Optional类包含的方法
查看>>
如何使用MR来读取数据库的数据,并写入HDFS上
查看>>
mapred-site.xml里面配置运行日志的输出目录
查看>>
DistributedCache是Hadoop的一个分布式文件缓存类
查看>>
FileSplit:文件的子集--文件分割体
查看>>
使用Hadoop的MapReduce来完成大表join
查看>>
常用的算法
查看>>
Mina框架
查看>>
Spring MVC 和 Servlet 一样,都不是线程安全的
查看>>
Java线程:线程的同步与锁
查看>>
Mac、Windows可以互相远程
查看>>
oracle提示 ORA-12154: TNS: 无法解析指定的连接标识符
查看>>
oracle 插入数据时提示没有足够的值
查看>>
Oracle Net Manager的使用及配置
查看>>
镜像文件
查看>>
苹果笔记本桌面下面的工具栏没了怎么调出来
查看>>
CSS原理与CSS经验分享
查看>>
oracle中int与number的区别
查看>>