首页 > 编程语言 >10.14算法

10.14算法

时间:2023-10-14 11:22:04浏览次数:35  
标签:shuffle nums int Solution 算法 inner 数组 10.14

给你一个整数数组 nums ,设计算法来打乱一个没有重复元素的数组。打乱后,数组的所有排列应该是 等可能 的。

实现 Solution class:

Solution(int[] nums) 使用整数数组 nums 初始化对象
int[] reset() 重设数组到它的初始状态并返回
int[] shuffle() 返回数组随机打乱后的结果
 

示例 1:

输入
["Solution", "shuffle", "reset", "shuffle"]
[[[1, 2, 3]], [], [], []]
输出
[null, [3, 1, 2], [1, 2, 3], [1, 3, 2]]

解释
Solution solution = new Solution([1, 2, 3]);
solution.shuffle(); // 打乱数组 [1,2,3] 并返回结果。任何 [1,2,3]的排列返回的概率应该相同。例如,返回 [3, 1, 2]
solution.reset(); // 重设数组到它的初始状态 [1, 2, 3] 。返回 [1, 2, 3]
solution.shuffle(); // 随机返回数组 [1, 2, 3] 打乱后的结果。例如,返回 [1, 3, 2]
 

提示:

1 <= nums.length <= 50
-106 <= nums[i] <= 106
nums 中的所有元素都是 唯一的
最多可以调用 104 次 reset 和 shuffle

class Solution { public:     vector<int> inner_nums;     Solution(vector<int>& nums) {                 for(int x:nums){             inner_nums.push_back(x);         }     }         vector<int> reset() {         return inner_nums;     }         vector<int> shuffle() {         vector<int> res = inner_nums;         for(int i=0;i<inner_nums.size();i++){             swap(res[i],res[rand()%(i+1)]);         }     } };   关键:res[rand()%(i+1)],使用随机函数获得一个索引用于随机打乱,怎么写东西,只要能随机就可以

标签:shuffle,nums,int,Solution,算法,inner,数组,10.14
From: https://www.cnblogs.com/minipython-wldx/p/17763929.html

相关文章

  • 网络规划设计师真题解析--PERT “计划评审技术”(三点估算法)
    某网络建设项目的安装阶段分为A、B、C、D四个活动任务,各任务顺次进行,无时间上重叠,各任务完成时间估计如下图所示,按照计划评审技术,安装阶段工期估算为(70)天。(2019年)(70)A.31   B.51    C.53    D.83答案:C解析:依据三点估算公示,活动历时均值=(最悲观时间+最可能时间*4+......
  • 算法题解——多数元素
    题目给定一个大小为n的数组nums,返回其中的多数元素。多数元素是指在数组中出现次数大于⌊n/2⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1:输入:nums=[3,2,3]输出:3示例2:输入:nums=[2,2,1,1,1,2,2]输出:2提示:n==nums.length......
  • 智慧矿山&矿山安全生产:AI算法实现矿山井下堆料检测
    在矿山行业中,堆料是一个重要的环节。堆料过程中,常常出现堆料不均匀、溢堆、重叠等问题,影响了生产效率和质量。传统的堆料检测方法耗时且不准确,无法满足井下作业的需求,因此需要一种智能化的堆料检测解决方案,这就是AI算法实现井下堆料检测的应用场景。AI算法技术在矿山行业中的应用日......
  • Exception in thread "main" java.security.InvalidKeyException: Wrong key size问题
    问题描述在Java里面使用DES加密算法,然后就爆出这个错误:问题解决换用了另外一种加密解密的函数:SecretKeySpec;即将原来的这种:换成了这种:我是觉得使用DES加密算法时,它一直显示key的字节长度不对,就想着换一种表述方式,又看到了别的友友的经验分享,就换成这样试了试(直接放进mai......
  • 深入理解MySQL中的Join算法
    本文已收录至GitHub,推荐阅读......
  • 逆波兰表达式与迷宫算法
    中项表达式是人类的算术思路,逆波兰表达式是机器结合栈结构完成算式解析的最佳结构。文章链接:https://zhuanlan.zhihu.com/p/357982040迷宫算法文章链接:https://blog.csdn.net/m0_53157173/article/details/114486303......
  • 文心一言 VS 讯飞星火 VS chatgpt (112)-- 算法导论10.2 3题
    三、用go语言,用一个单链表L实现一个队列。要求操作ENQUEUE和DEQUEUE的运行时间仍为O(1)。文心一言:在Go语言中,使用单链表实现队列的操作,包括入队(ENQUEUE)和出队(DEQUEUE),并保持操作的时间复杂度为O(1),需要利用两个指针,一个指向队头,另一个指向队尾。以下是一个简单的实现:pac......
  • 一个需要感性理解的树上算法 学习心得
    题目描述你现在有一颗\(n\)个点的树和\(m\)条由\(x_i\)到\(y_i\)(\(1\lex_i\,\y_i\len\))的简单可重复路径。求有多少种方案选路径,使路径集的大小为\(k\),且所有路径至少有一个公共点。对\(10^9+7\)取模。题解这道题需要感性理解做法。我们记一个路径左右......
  • 互补滤波姿态解算算法思路
    ......
  • Lnton羚通机器视觉算法平台不系安全带违法智能监控解决方案
    Lnton羚通的算法算力云平台是一款优秀的解决方案,具有突出的特点。它提供高性能、高可靠性、高可扩展性和低成本的特性,使用户能够高效地执行复杂计算任务。此外,平台还提供丰富的算法库和工具,并支持用户上传和部署自定义算法,提升了平台的灵活性和个性化能力。在发生交通事故时,很多事......