【LeetCode笔记 - 每日一题】519. 随机翻转矩阵(Java、随机、双指针)
文章目录
- 题目描述
- 思路 && 代码
题目描述
- 又是涉及到均等概率的随机~
思路 && 代码
- 用的题解区三叶的代码~写得是真的好!不论题目,但抄一遍代码都能觉得有收获!
- 维度转化:并没有创造二维数组(太大了)。而是转化成一维的场景。
- 双指针:每次随机一个[0, m * n)的值,然后向左、向右查找第一个没访问过的值
class Solution {int m;int n;Random random = new Random();Set<Integer> set = new HashSet<>(); // 记录访问public Solution(int m, int n) {this.m = m;this.n = n;}public int[] flip() {int toLeft = random.nextInt(m * n), toRight = toLeft; // 双指针,双向延伸while(toLeft >= 0 && set.contains(toLeft)) toLeft--;while(toRight < m * n && set.contains(toRight)) toRight++;int index = toLeft >= 0 && !set.contains(toLeft) ? toLeft : toRight; // 二选一set.add(index);return new int[]{index / n, index % n}; // 一维 =》二维}public void reset() {set.clear();}
}
- 自己写一遍:
class Solution {int m, n;Set<Integer> set = new HashSet<>();Random random = new Random();public Solution(int m, int n) {this.m = m;this.n = n;}public int[] flip() {int toLeft = random.nextInt(m * n), toRight = toLeft;while(toLeft >= 0 && set.contains(toLeft)) toLeft--;while(toRight < m * n && set.contains(toRight)) toRight++;int index = toLeft >= 0 && !set.contains(toLeft) ? toLeft : toRight;set.add(index);return new int[]{index / n, index % n};}public void reset() {set.clear();}
}
【LeetCode笔记 - 每日一题】519. 随机翻转矩阵(Java、随机、双指针)相关推荐
- 【LeetCode笔记 - 每日一题】375. 猜数字游戏 II (Java、DFS、动态规划)
文章目录 题目描述 思路 && 代码 DFS 动态规划 新系列-用于区分开高频题和每日一题- 题目描述 一眼二分,但是实际上并不是 这题让我想到社团的猜数字游戏-但是给钱是真过分了= ...
- 【LeetCode笔记 - 每日一题】384. 打乱数组(Java、洗牌算法)
文章目录 题目描述 思路 && 代码 题目描述 中等题,很赞!第一次碰到涉及洗牌算法的题 有点涉及概率,主要是要实现公平的随机 思路 && 代码 采用了 Knuth 洗 ...
- 【LeetCode笔记 - 每日一题】373. 查找和最小的 K 对数字(Java、堆、优先队列)
文章目录 题目描述 思路 && 代码 题目描述 几天没打题,感觉脑子都是一团浆糊.... 升序:肯定得用这条件来优化复杂度 数对:用 int[2] 来表示 思路 && ...
- 【LeetCode笔记 - 每日一题】334. 递增的三元子序列(Java、偏思路)
文章目录 题目描述 思路 && 代码 题目描述 可以转换成300. 最长递增子序列,再看结果是否大于3 但上述写法O(N)复杂度实现不了,还是得用针对这道题的写法(见下) 思路 &am ...
- 【LeetCode笔记 - 每日一题】423. 从英文中重建数字(Java、字符串、偏思路)
文章目录 题目描述 思路 && 代码 题目描述 看了题目以后想到啥? 字符数量统计 银行家算法逐个拆解 建立数字 - 字符串的全局映射 思路 && 代码 抄答案了,采取 ...
- 【LeetCode笔记 - 每日一题】318. 最大单词长度乘积(Java、位运算)
文章目录 题目描述 思路 && 代码 题目描述 挺不错!有bitmap的感觉了. 思路 && 代码 思路好想:两两对比,无公共判断,维护 res 那么,如何进行公共判断 ...
- java水平翻转矩阵_Java实现 LeetCode 519 随机翻转矩阵
519. 随机翻转矩阵 题中给出一个 n 行 n 列的二维矩阵 (n_rows,n_cols),且所有值被初始化为 0.要求编写一个 flip 函数,均匀随机的将矩阵中的 0 变为 1,并返回该值的位 ...
- Java实现 LeetCode 519 随机翻转矩阵
519. 随机翻转矩阵 题中给出一个 n 行 n 列的二维矩阵 (n_rows,n_cols),且所有值被初始化为 0.要求编写一个 flip 函数,均匀随机的将矩阵中的 0 变为 1,并返回该值的位 ...
- 519. 随机翻转矩阵
519. 随机翻转矩阵 给你一个 m x n 的二元矩阵 matrix ,且所有值被初始化为 0 .请你设计一个算法,随机选取一个满足 matrix[i][j] == 0 的下标 (i, j) ,并将 ...
最新文章
- Linux下安装java(Ubuntu为例)
- S/4HANA CLOUD 年度九大新功能(2020)
- iphone相册储存空间已满_无需第三方APP,加密 iPhone 中的照片
- 怎么样给单选按钮前面插入小图标
- 【模板】并查集 两种路径压缩写法(类模板和函数模板)
- 【cudnn】cudnn 安装
- 论文浅尝 | 利用开放域触发器知识改进事件检测
- istio springcloud_手牵手一起学Springcloud(1)微服务这么流行,你理解了嘛?
- oracle 拼接_老品牌福建泉州49寸液晶拼接屏多少钱品质
- Vscode下安装Go语言及其插件
- echarts Map(地图) 不同颜色区块显示
- 从零开始学习OpenWrt完美教程
- 基于java的超市积分管理系统设计(含源文件)
- 永恒之蓝漏洞复现(MS17010)
- matlab模型辨识工具箱的使用
- mysql 脏页刷新_InnoDB脏页刷新机制
- mysql data::dumper_初始化mysql数据库提示缺少Data:dumper模块解决方法
- C语言二维数组范德蒙,2、编写一个程序,实现一个3×4矩阵转置。
- cesium颜色值赋值
- CAD版本转换,手机该如何转换操作呢?
热门文章
- Leetcode--24. 两两交换链表中的结点
- 北师大计算机试题五答案,北京师范大学计算机软件及理论2022考研招生分析、参考书、真题等复习指导解析...
- shell for循环1到100_浅谈Linux下shell 编程的for循环常用的6种结构
- cmd测试cuda安装_安装:anaconda+cuda+pytorch+pycharm
- OpenCV示例学习(二): 基本图形绘制算子:line(),circle(),fillPoly(), ellipse()
- 7.Mysql数据库表引擎与字符集
- itext实现HTML转换为PDF
- Java并发编程实战~原子类
- redis取出list最边的一个_六、Redis列表(list)类型参考记录(1)
- 天池CV学习赛:街景字符识别-思路与上分技巧汇总