Leetcode_398_随机数索引_hn

题目描述

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

示例

示例 1:

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);

解答方法

方法一:

思路

遍历数组,和target相等的数的索引保存在一个新的数组里,然后从这个数组中随机选择一个值返回

代码

class Solution:

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

    def pick(self, target: int) -> int:
        res = []
        #enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据下标和数据
        for i,val in enumerate(self.nums):
            if self.nums[i] == target:
                res.append(i)
        return res[random.randint(0,len(res) - 1)]
        


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

时间复杂度

空间复杂度

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 成功人士都有个共同的优点:专注,聚焦。清晰自己的目标,知道自己想要什么样的结果!并且笃定目标通过各种途径去实现他,...
    岚海岛主阅读 1,855评论 0 1
  • 以终为始,珍惜当下,不留遗憾。 周洁,原名周玉梅,1973年12月16日生于河北衡水南二屯村。她幼年热爱学习,苦读...
    ae123b3ee184阅读 1,405评论 0 2
  • 我还是愿意相信,天生我材必有用。 不是每个人都需要做同样的事,人总是有自己在这个世界上所处的位置的,珍惜自己的不同...
    O布布O阅读 2,405评论 0 1
  • 妈妈,原来你是妹妹,二姨是姐姐。昨日小乐子恍然大悟。 天啊!十年了你才知道啊?没听我经常叫她小姐姐吗? 小乐子说:...
    果慧_631e阅读 2,629评论 2 3

友情链接更多精彩内容