LeetCode 519随机翻转矩阵[Map] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 519随机翻转矩阵[Map] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。


解题思路:
为了满足等于0的下标被选取的概率应当相等的条件,之前选过翻转的下标就不要选择了,只关注未被翻转过的,那么为了实现这个目标,需要对翻转后的下标与很靠后未反转的下标形成映射,因为我们每次随机生成的下标是有范围的,并且每生成一次就要减少1,这会导致最后一位永远都随机不到,既然随机不到,那么让可以随机到的但是被翻过的与其进行映射,这样直接映射的话就更为公平了,满足条件,代码如下:

class Solution 
private:
    int m;
    int n;
    iont total;
    unordered_map<int, int> mp;
public:
    Solution(int m, int n) 
        this->m = m;
        this->n = n;
        this->total = m * n;
    
    
    vector<int> flip() 
        int choose = rand() % total;
        int temp = choose;
        while(!mp.count(temp)) 
            temp = mp[temp];
        
        mp[choose] = total - 1;
        
    
    
    void reset() 
        total = m * n;
        mp.clear();
    
;

/**
 * Your Solution object will be instantiated and called as such:
 * Solution* obj = new Solution(m, n);
 * vector<int> param_1 = obj->flip();
 * obj->reset();
 */

以上是关于LeetCode 519随机翻转矩阵[Map] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

解题报告Leecode 519. 随机翻转矩阵——Leecode每日一题系列

LeetCode 458. 可怜的小猪(找毒药问题) / 700. 二叉搜索树中的搜索 / 519. 随机翻转矩阵(哈希表记录交换位置)

随机矩阵位置构造题——519. 随机翻转矩阵

《LeetCode之每日一题》:220.随机翻转矩阵

Leetcode 519. Random Flip Matrix

[LeetCode] Random Flip Matrix 随机翻转矩阵