Golang | Leetcode Golang题解之第519题随机翻转矩阵

题目:

题解:

Go 复制代码
type Solution struct {
    m, n, total int
    mp          map[int]int
}

func Constructor(m, n int) Solution {
    return Solution{m, n, m * n, map[int]int{}}
}

func (s *Solution) Flip() (ans []int) {
    x := rand.Intn(s.total)
    s.total--
    if y, ok := s.mp[x]; ok { // 查找位置 x 对应的映射
        ans = []int{y / s.n, y % s.n}
    } else {
        ans = []int{x / s.n, x % s.n}
    }
    if y, ok := s.mp[s.total]; ok { // 将位置 x 对应的映射设置为位置 total 对应的映射
        s.mp[x] = y
    } else {
        s.mp[x] = s.total
    }
    return
}

func (s *Solution) Reset() {
    s.total = s.m * s.n
    s.mp = map[int]int{}
}
相关推荐
邓熙榆几秒前
Logo语言的网络编程
开发语言·后端·golang
小孟Java攻城狮4 小时前
leetcode-不同路径问题
算法·leetcode·职场和发展
ByteBlossom6666 小时前
MDX语言的语法糖
开发语言·后端·golang
编程小猹6 小时前
学习golang语言时遇到的难点语法
学习·golang·xcode
沈霁晨7 小时前
Ruby语言的Web开发
开发语言·后端·golang
代码驿站52011 小时前
JavaScript语言的软件工程
开发语言·后端·golang
行路见知11 小时前
3.1 Go函数调用过程
golang
一只会飞的猪_11 小时前
国密加密golang加密,java解密
java·开发语言·golang
C++小厨神13 小时前
MATLAB语言的编程范式
开发语言·后端·golang
小柴狗13 小时前
MAC 地址转换为标准大写格式
golang