当前位置: 代码迷 >> 综合 >> Leetcode 384. Shuffle an Array (python+cpp)
  详细解决方案

Leetcode 384. Shuffle an Array (python+cpp)

热度:107   发布时间:2023-11-26 07:21:54.0

Leetcode 384. Shuffle an Array

  • 题目
  • 解法:Fisher-Yates Algorithm

题目

在这里插入图片描述

解法:Fisher-Yates Algorithm

通过调换数组位置的方式产生shuffle效果
python代码如下:
复制有问题,截图吧
在这里插入图片描述
C++版本如下:
注意一下rand函数的用法,见链接:https://www.cnblogs.com/yuehouse/p/10116691.html

class Solution {
    vector<int> original;
public:Solution(vector<int>& nums){
    original = nums;}/** Resets the array to its original configuration and return it. */vector<int> reset() {
    return original;}/** Returns a random shuffling of the array. */vector<int> shuffle() {
    vector<int> shuffled(original);int n = original.size();for (int i=0;i<n;i++){
    int swap_idx = rand() % (n-i);swap(shuffled[i],shuffled[i+swap_idx]);}return shuffled;}
};
  相关解决方案