美文网首页Leetcode
Leetcode.384.Shuffle an Array

Leetcode.384.Shuffle an Array

作者: Jimmy木 | 来源:发表于2019-12-31 10:32 被阅读0次

    题目

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

    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;
        }
    };
    

    总结

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

    相关文章

      网友评论

        本文标题:Leetcode.384.Shuffle an Array

        本文链接:https://www.haomeiwen.com/subject/whkboctx.html