当前位置: 首页 > news >正文

在长度2N的数组中找出重复N次的元素(四)

方法三:随机选择

思路与算法

我们可以每次随机选择两个不同的下标,判断它们对应的元素是否相等即可。如果相等,那么返回任意一个作为答案。

代码

C++

class Solution { public: int repeatedNTimes(vector<int>& nums) { int n = nums.size(); mt19937 gen{random_device{}()}; uniform_int_distribution<int> dis(0, n - 1); while (true) { int x = dis(gen), y = dis(gen); if (x != y && nums[x] == nums[y]) { return nums[x]; } } } };

Java

class Solution { public int repeatedNTimes(int[] nums) { int n = nums.length; Random random = new Random(); while (true) { int x = random.nextInt(n), y = random.nextInt(n); if (x != y && nums[x] == nums[y]) { return nums[x]; } } } }

C#

public class Solution { public int RepeatedNTimes(int[] nums) { int n = nums.Length; Random random = new Random(); while (true) { int x = random.Next(n), y = random.Next(n); if (x != y && nums[x] == nums[y]) { return nums[x]; } } } }

Python3

class Solution: def repeatedNTimes(self, nums: List[int]) -> int: n = len(nums) while True: x, y = random.randrange(n), random.randrange(n) if x != y and nums[x] == nums[y]: return nums[x]

C

int repeatedNTimes(int* nums, int numsSize) { srand(time(NULL)); while (true) { int x = random() % numsSize, y = random() % numsSize; if (x != y && nums[x] == nums[y]) { return nums[x]; } } }

复杂度分析

  • 时间复杂度:期望 O(1) 。选择两个相同元素的概率为 n/2n*(n-1)/2n≈1/4 ,因此期望 44 次结束循环。
  • 空间复杂度:O(1) 。
http://www.jsqmd.com/news/1082216/

相关文章:

  • 3分钟解锁Foobar2000专业级逐字歌词体验:ESLyric-LyricsSource完全指南
  • DLSS Swapper:3步教你智能管理游戏DLSS版本,帧率提升高达50%
  • 如何用3步实现跨平台网络资源智能抓取与下载
  • 大涡模拟涡粘性模型:从数值实现到守恒性分析的完整实践
  • 如何永久保存你的微信记忆:WeChatMsg聊天记录备份终极指南
  • Display Driver Uninstaller:如何彻底解决Windows显卡驱动冲突问题
  • 每天一课:算法学习路线全解析
  • 如何用AI语音克隆技术:10分钟数据训练专业级变声模型实战指南
  • JetBrains认证架构师亲授:中小企业IDEA版本迁移路线图——从社区版起步,到旗舰版升级的3个临界点、2次成本拐点与1次不可逆技术债预警
  • 开源vs商业虚拟化平台深度博弈,VMware Workstation Pro 17 vs VirtualBox 7.0:12项关键能力横评,结果颠覆认知!
  • 2026年第12届中国功率变换器磁元件联合学术年会通知
  • ExifToolGui完整指南:5个高效照片管理技巧让你成为元数据专家
  • 软件泛化管理化的类型抽象与算法通用
  • 显卡驱动深度清理终极指南:如何彻底解决驱动冲突问题
  • 如何破解极域电子教室控制限制:JiYuTrainer终极指南
  • 备用教学图片
  • 字节AI岗位大揭秘:收藏这份超全解析,小白也能看懂大模型布局!
  • SEGRE 2026主题分论坛/博士论坛抢先看
  • AJ-Report认证绕过至RCE漏洞深度剖析与实战复现
  • 构建离线WSL Ubuntu环境:从原理到一键部署的完整指南
  • 教师节海报没灵感?这5个网站,帮你轻松解决
  • 终极移动端宝可梦存档编辑器PKHeX.Mobile:5分钟掌握跨版本宝可梦管理完整指南
  • 企业级虚拟化平台决策生死局(VMware vs Hyper-V深度攻防拆解)
  • 【Unity 】Sprite Atlas 图集重建幂等性分析
  • Layerdivider终极指南:5分钟实现智能图像分层,释放设计师创造力
  • Doris多维分析-详细介绍分析
  • 如何专业地移除Windows中的Microsoft Edge浏览器?EdgeRemover工具完整指南
  • JiYuTrainer终极破解指南:3分钟轻松解除极域电子教室限制
  • 九大网盘一键直链下载:告别限速烦恼的完整解决方案
  • 如何提高AI生成测试用例的质量,我总结了这套思路...