【LeetCode】398. 随机数索引 结题报告 (python)

告别Overleaf!本地LaTeX环境配置:VSCode+TeXLive完全指南(Windows/Mac双平台) 本文详细介绍了如何在Windows和Mac平台上配置本地LaTeX环境,使用VSCode和TeXLive打造高效的专业写作工作流。从TeXLive安装到VSCode插件配置,再到高级技巧与性能优化,帮助用户摆脱Overleaf限制,实现更快速、更私密的学术写作体验。 阅读详情

原题地址:https://leetcode-cn.com/problems/random-pick-index/submissions/

题目描述:

给定一个可能含有重复元素的整数数组,要求随机输出给定的数字的索引。 您可以假设给定的数字一定存在于数组中。

注意:
数组大小可能非常大。 使用太多额外空间的解决方案将不会通过测试。

示例:

int[] nums = new int[] {1,2,3,3,3};
Solution solution = new Solution(nums);

// pick(3) 应该返回索引 2,3 或者 4。每个索引的返回概率应该相等。
solution.pick(3);

// pick(1) 应该返回 0。因为只有nums[0]等于1。
solution.pick(1);

解题方案:

最直接的方法,直接遍历所有的值,再随机选择索引:

class Solution:

    def __init__(self, nums: List[int]):
        self.nums = nums
        self.n = len(nums)

    def pick(self, target: int) -> int:
        res = []
        for i in range(self.n):
            if self.nums[i] == target:
                res.append(i)
        return random.choice(res)


# Your Solution object will be instantiated and called as such:
# obj = Solution(nums)
# param_1 = obj.pick(target)

其他比较快的方法,定义一个索引值,每次查找时更改索引值。这样也叫概率相同哦。。。不确定的事叫概率相同。。。

class Solution:

    def __init__(self, nums: List[int]):
        self.nums = nums
        self.index = -1
        self.len = len(nums)

    def pick(self, target: int) -> int:
        while True:
            if self.index == self.len - 1:
                self.index = 0
            else:
                self.index += 1
                
            if self.nums[self.index] == target:
                break
        
        return self.index

 

GEE开发之ERA5(气温、降水、压力、风速等)数据获取和分析 前言:ERA5主要提供DAILY和MONTHLY两大类别数据,其中主要包括气温、降水、压力、风速等。 阅读详情

相关推荐

机械式激光雷达实现原理以及特性总结

本文介绍了机械式激光雷达的技术原理和核心特性。该技术通过机械旋转结构实现360°三维扫描,采用飞行时间法测距并生成点云数据。核心优势包括全向扫描、长距高精度和成熟度高,但存在体积大、成本高、可靠性受限等局限。典型应用于自动驾驶测试车、测绘建模等领域。与固态激光雷达相比,机械式在视场角和探测距离方面有优势,但在体积、成本和可靠性方面处于劣势。该技术目前主要应用于对成本不敏感的专业场景。

start_up_go的博客 246

pythonleetcode【13】 -- 至少有K个重复字符的最长子串(395)

至少有K个重复字符的最长子串(395) 题目 找到给定字符串(由小写字符组成)中的最长子串 T , 要求 T 中的每一字符出现次数都不少于 k 。输出 T 的长度。 示例 1: 输入: s = “aaabb”, k = 3 输出: 3 最长子串为 “aaa” ,其中 ‘a’ 重复了 3 次。 示例 2: 输入: s = “ababbc”, k = 2 输出: 5 最长子串为 “ababb” ,其中...

rory0114的博客 841

SQL基础:HQL之常用的行列转换应用总结

行列转换是数据开发者的基本技能,也是面试重点,在数据开发中处处可见,本文对常见的几种情况进行了总结,包括了多行转多列,多行转单列,多列转多行,单列转多行的几种情况,并给出了解决思路和方法,读者可根据本文给出的思路灵活应对业务中遇到的问题。

石榴姐yyds 1780

[LeetCode Python3]395. Longest Substring with At Least K Repeating Characters +递归

395. Longest Substring with At Least K Repeating Characters class Solution: def longestSubstring(self, s: str, k: int) -> int: if len(s) < k: return 0 for c in set(s): # 若某个字符c的个数大于0且小于k,那么包含它的子串必然不符合要求,

xvrixingkong的博客 272

[Leetcode Daily] 395. 至少有 K 个重复字符的最长子串

Description 给你一个字符串 s 和一个整数 k ,请你找出 s 中的最长子串, 要求该子串中的每一字符出现次数都不少于 k 。返回这一子串的长度。 示例 1: 输入:s = “aaabb”, k = 3 输出:3 解释:最长子串为 “aaa” ,其中 ‘a’ 重复了 3 次。 示例 2: 输入:s = “ababbc”, k = 2 输出:5 解释:最长子串为 “ababb” ,其中 ‘a’ 重复了 2 次, ‘b’ 重复了 3 次。 提示: 1 <= s.length <= 104

I Hsien's BLOG 401

leetcode_[python/C++]_395_Longest Substring with At Least K Repeating Characters_(递归非递归)

题目链接【题目】 Find the length of the longest substring T of a given string (consists of lowercase letters only) such that every character in T appears no less than k times.Example 1:Input: s = “aaabb”, k

Mosen 462

给定一个可能含有重复元素的整数数组,要求随机输出给定的数字的索引。 您可以假设给定的数字一定存在于数组中。 注意: 数组大小可能非常大。 使用太多额外空间的解决方案将不会通过测试。 来源:力扣(L

这是力扣上的一道题,很多朋友对如何保持选取概率存在疑问,下面就让我来解释一下。 下图是一个解。当[i]==target的时,即输入的数据和数组中的匹配的第一个数一样时,c+1=1. 这时随机数对n取余的结果自然是0,令point=i。当循环继续向下走的时候,如果再遇到一个数和输入的数据一样,如何保持每个匹配的数选取概率一样的呢?比如,当又遇到一个数时,c=c+1=2;对C取余的结果有两个,0或1。...

sgdfnbgng的博客 519

leetcode398. 随机数索引

题目 给定一个可能含有重复元素的整数数组,要求随机输出给定的数字的索引。 您可以假设给定的数字一定存在于数组中。 注意: 数组大小可能非常大。 使用太多额外空间的解决方案将不会通过测试。 示例: int[] nums = new int[] {1,2,3,3,3}; Solution solution = new Solution(nums); // pick(3) 应该返回索引 2,3 或者 4。每个索引的返回概率应该相等。 solution.pick(3); // pick(1) 应该返回 0。因为

天行九歌 193

LeetCode每日一题——398. 随机数索引

目录题目示例思路题解 题目 给定一个可能含有重复元素的整数数组,要求随机输出给定的数字的索引。 您可以假设给定的数字一定存在于数组中。 注意: 数组大小可能非常大。 使用太多额外空间的解决方案将不会通过测试。 示例 示例: int[] nums = new int[] {1,2,3,3,3}; Solution solution = new Solution(nums); // pick(3) 应该返回索引 2,3 或者 4。 每个索引的返回概率应该相等。 // pick(1) 应该返回 0。因为只有nu

hyk的博客 214

LeetCode 398 随机数索引 Python

给定一个可能含有重复元素的整数数组,要求随机输出给定的数字的索引。 您可以假设给定的数字一定存在于数组中。注意:数组大小可能非常大。 使用太多额外空间的解决方案将不会通过测试。示例:int[] nums = new int[] {1,2,3,3,3}; Solution solution = new Solution(nums); // pick(3) 应该返回索引 2,3 或者 4。每个索引...

ma412410029的博客 1123

LeetCode 398.随机数索引

题目描述 给定一个可能含有重复元素的整数数组,要求随机输出给定的数字的索引。 您可以假设给定的数字一定存在于数组中。 注意: 数组大小可能非常大。 使用太多额外空间的解决方案将不会通过测试。 示例: int[] nums = new int[] {1,2,3,3,3}; Solution solution = new Solution(nums); // pick(3) 应该返回索引 2,3 或者 4。每个索引的返回概率应该相等。 solution.pick(3); // pick(1) 应该返回 0。

落末的博客 216

LeetCode刷题——随机数索引#398#Medium

随机数索引的题目如下图,该题属于数学类和哈希表类型的题目,主要考察对于数学方法的使用和哈希表方法的理解。本文的题目作者想到2种方法,分别是哈希表方法和模拟方法,其中哈希表方法使用Java进行编写,而模拟方法使用Python进行编写,当然这可能不是最优的解法,还希望各位大佬给出更快的算法。随机数索引的思路探讨与源码。

喷火龙与水箭龟的博客 360

每日一题-398. 随机数索引_Python

给定一个可能含有重复元素的整数数组,要求随机输出给定的数字的索引。 您可以假设给定的数字一定存在于数组中。 注意: 数组大小可能非常大。 使用太多额外空间的解决方案将不会通过测试。 示例: int[] nums = new int[] {1,2,3,3,3}; Solution solution = new Solution(nums); // pick(3) 应该返回索引 2,3 或者 4。每个索引的返回概率应该相等。 solution.pick(3); // pick(1) 应该返回 0。因为.

weixin_45344430的博客 215

python随机列表的索引_398. 随机数索引Python

题目难度:★★☆☆☆类型:数组方法:数学力扣链接请移步本题传送门更多力扣中等题的解决方案请移步力扣中等题目录给定一个可能含有重复元素的整数数组,要求随机输出给定的数字的索引。 您可以假设给定的数字一定存在于数组中。注意:数组大小可能非常大。 使用太多额外空间的解决方案将不会通过测试。示例:int[] nums = new int[] {1,2,3,3,3};Solution solution = ...

weixin_39782832的博客 561

leetcode398 随机数索引(蓄水池抽样)

题目链接:https://leetcode-cn.com/problems/random-pick-index/ 题目描述 给定一个可能含有重复元素的整数数组,要求随机输出给定的数字的索引。 您可以假设给定的数字一定存在于数组中。 注意: 数组大小可能非常大。 使用太多额外空间的解决方案将不会通过测试。 示例: int[] nums = new int[] {1,2,3,3,3}; Solutio...

zjwreal 162

Python | Leetcode Python题解之第398随机数索引

Python | Leetcode Python题解之第398随机数索引

Mopes__的博客 866

java数组索引随机值的用法

在获取数组的索引随机值时,我是直接把 r.nextInt(arr.length) 放在索引的位置;没有用中间变量过渡,最后出现的结果为。定义一个整型数组,int [] arr = {1,2,3,4,5};要求随机打乱数组的顺序。但当我把 r.next(arr.length) 的值赋值中间值变量a时,谨记,在数组的索引位置使用随机值代替时,需要用到中间值变量过渡一下。

qq_69333317的博客 462

python/numpy随机选取训练集/测试集索引

在训练模型中, 往往需要对数据集进行处理,从数据集中随机选取部分数据作为训练集,而另一部分数据作为测试集,一个常用的方法是随机选取索引,下面介绍两种从0~n中随机选取x个不重复索引的方法。 注意下述两种方法选出来的都是整数。 方法一、用python的random import random def getRandomIndex(n, x): # 索引范围为[0, n), 随机选x个不重复 ...

吟游诗人——吟唱生命的不朽 1万+

398. 随机数索引

398. 随机数索引 难度:中等 给定一个可能含有重复元素的整数数组,要求随机输出给定的数字的索引。 您可以假设给定的数字一定存在于数组中。 注意: 数组大小可能非常大。 使用太多额外空间的解决方案将不会通过测试。 示例: int[] nums = new int[] {1,2,3,3,3}; Solution solution = new Solution(nums); // pick(3) 应该返回索引 2,3 或者 4。每个索引的返回概率应该相等。 solution.pick(3); // pic

Finish_Hou 225

LeetCode 398随机数索引

在实际开发中,我们经常需要从一组数据中随机选取符合条件的元素,比如在推荐系统里随机挑选一个用户的历史点击视频、在数据库负载均衡中随机选一台可用节点、或者在游戏逻辑中随机生成某种敌人。 这道题就是一个小巧但非常有代表性的例子。 我们要做的事情是: 给定一个整数数组 nums(可能有重复),然后随机返回某个目标值 target 出现的 任意一个索引,并且要保证所有满足条件的索引被选中的 概率是相等的。

记录从移动端、鸿蒙到物联网与AI的完整实战与思考。专注于分享可复用的工程方案与产品思维,尤其深入鸿蒙生态与全栈开发。以十年工程与管理沉淀,为你提供清晰的技术纵深路径。坚信技术的价值在于“贯通”与“落地”。 1235

关于python生成随机数列表,并获取满足条件元素对应索引值的常用方法

常用方法: np.where(np.random.rand(N) < x) 关于这个这一串简单的代码,我们有必要先明白几个关键函数。 1)np.where() numpy.where() 有两种用法: np.where(condition, x, y) 满足条件(condition),输出x,不满足输出y 输出结果为: np.where(condition) 只有条件 (condition),没有x和y,则输出满足条件 (即非0) 元素的坐标 (等价于numpy.nonzero)。这里的坐标以tu

qq_52585455的博客 2637

python随机列表的索引_列表中随机数索引

Since I am using the index of the numbers I can't use methods such as random.sample当然可以:>>> import random>>> my_list = [0]*10>>> my_list[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]>&gt...

weixin_29783347的博客 1675

ffmpeg安装教程

ffmpeg安装教程

Printer Pro 7730 downgrade to 1851A惠普7730降级固件

惠普7730降级固件,使用非原装墨盒的,我的7730连供OK。理论上是通用7720的

上一篇: 【LeetCode】397. 整数替换 结题报告 (python)
下一篇: 【LeetCode】399. 除法求值 结题报告 (python)
暮雨凉初透
博客等级 码龄11年 30粉丝 298原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值