Leetcode

Leetcode.384.Shuffle an Array

2019-12-31  本文已影响0人  Jimmy木

题目

给数组洗牌。给定一个数组,输出一个数组乱序的结果。

Input:[1,2,3]
Output:[1,3,2],[3,1,2]...

思路

每次产生一个随机数,和当前数进行交换,可能就是交换本身。这样可以避免重复的随机数问题。

class Solution {
public:
    vector<int> m_nums;
    vector<int> m_shuffle;

    Solution(vector<int>& nums) {
        m_nums = nums;
        m_shuffle = nums;
    }
    vector<int> reset() {
        return m_nums;
    }

    vector<int> shuffle() {
        int n = (int)m_shuffle.size();
        for (int i = 0;i < n;i++) {
            int a = rand() % n;
            int temp = m_shuffle[a];
            m_shuffle[a] = m_shuffle[i];
            m_shuffle[i] = temp;
        }
        return m_shuffle;
    }
};

总结

如何高效的随机是个问题,单纯的随机数会随着规模增加,不断重复。

上一篇 下一篇

猜你喜欢

热点阅读