题目:
题解:
class Solution {
public:Solution(int m, int n) {this->m = m;this->n = n;this->total = m * n;srand(time(nullptr));}vector<int> flip() {int x = rand() % total;vector<int> ans;total--; // 查找位置 x 对应的映射if (map.count(x)) {ans = {map[x] / n, map[x] % n};} else {ans = {x / n, x % n};}// 将位置 x 对应的映射设置为位置 total 对应的映射if (map.count(total)) {map[x] = map[total];} else {map[x] = total;}return ans;}void reset() {total = m * n;map.clear();}
private:int m;int n;int total;unordered_map<int, int> map;
};