每日一题——随机数索引

简介: 每日一题——随机数索引

398. 随机数索引

题目描述:

给你一个可能含有 重复元素 的整数数组 nums ,请你随机输出给定的目标数字 target 的索引。你可以假设给定的数字一定存在于数组中。

(target 是 nums 中的一个整数)

实现 Solution 类:

Solution(int[] nums) 用数组 nums 初始化对象。

int pick(int target) 从 nums 中选出一个满足 nums[i] == target 的随机索引 i 。如果存在多个有效的索引,则每个索引的返回概率应当相等。

示例:

输入

[“Solution”, “pick”, “pick”, “pick”]

[[[1, 2, 3, 3, 3]], [3], [1], [3]]

输出

[null, 4, 0, 2]

解释

Solution solution = new Solution([1, 2, 3, 3, 3]);

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

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

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

题解:

type Solution struct {
  nums []int
}
func Constructor(nums []int) Solution {
  var solution Solution
  solution.nums = make([]int,len(nums))
  copy(solution.nums, nums)
  return solution
}
func (p *Solution) Pick(target int) int {
  transition := make([]int, 0)
  // 遍历切片,如果nums[i] = target ,将对应下标追加到切片中
  for i, v := range p.nums {
    if v == target {
      transition = append(transition, i)
    }
  }
  // 如果只有一个匹配的,直接返回其下标即可
  if len(transition)==1 {
    return transition[0]
  }
  // 如果有多个匹配的,
  // 通过rand.Intn(n): 生成[0,n)的随机数, 随机返回即可
  return transition[rand.Intn(len(transition))]
}

提交结果:

相关文章
|
程序员 C语言
C语言控制语句详解
C语言控制语句详解
246 0
|
Java
探秘jstack:解决Java应用线程问题的利器
探秘jstack:解决Java应用线程问题的利器
593 1
探秘jstack:解决Java应用线程问题的利器
|
数据采集 自然语言处理 数据挖掘
【NLP-新闻文本分类】1 数据分析和探索
文章提供了新闻文本分类数据集的分析,包括数据预览、类型检查、缺失值分析、分布情况,指出了类别不均衡和句子长度差异等问题,并提出了预处理建议。
282 1
|
机器学习/深度学习 存储 并行计算
CPU 和 GPU到底有啥区别?
【5月更文挑战第10天】
1950 2
CPU 和 GPU到底有啥区别?
|
移动开发 负载均衡 小程序
代驾app开发丨代驾系统开发玩法详情丨代驾系统开发网页版/H5/小程序及源码部署
**司机/代驾员端**:司机可以通过APP接收订单,查看订单详情、路线和导航,提供现场服务并进行确认。
|
安全 网络安全 网络架构
黑客精神和白帽子
在当今数字化的世界里,黑客精神和白帽子的角色变得愈发重要。本文将探讨黑客精神的本质,介绍白帽子的概念和职责。
|
弹性计算 TensorFlow 算法框架/工具
在ECS上使用eRDMA加速Tensorflow
eRDMA是8代ECS自带的RDMA加速功能,可以充分发挥RDMA的优势,提升应用的性能。本文将介绍如何使用eRDMA来加速Tensorflow,并实测benchmark下的性能。
649 0
|
开发工具 git
Git tag管理
Git tag管理
328 0
|
监控 API 数据库
为什么选择微服务架构? 微服务架构的10个核心优势 总结
为什么选择微服务架构? 微服务架构的10个核心优势 总结
2407 0
|
Windows
【错误记录】GitHub 网站和仓库无法访问 ( 域名重定向 | 检查 C:\Windows\System32\drivers\etc\hosts 配置文件中的 GitHub 地址域名配置 )
【错误记录】GitHub 网站和仓库无法访问 ( 域名重定向 | 检查 C:\Windows\System32\drivers\etc\hosts 配置文件中的 GitHub 地址域名配置 )
674 0
【错误记录】GitHub 网站和仓库无法访问 ( 域名重定向 | 检查 C:\Windows\System32\drivers\etc\hosts 配置文件中的 GitHub 地址域名配置 )