美文网首页
Leetcode_398_随机数索引_hn

Leetcode_398_随机数索引_hn

作者: 1只特立独行的猪 | 来源:发表于2020-03-12 19:42 被阅读0次

    题目描述

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

    示例

    示例 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)
    

    时间复杂度

    空间复杂度

    相关文章

      网友评论

          本文标题:Leetcode_398_随机数索引_hn

          本文链接:https://www.haomeiwen.com/subject/dsnijhtx.html