文章目录

  • 题目描述
  • 思路 && 代码

题目描述

  • 中等题,很赞!第一次碰到涉及洗牌算法的题
  • 有点涉及概率,主要是要实现公平的随机

思路 && 代码

  • 采用了 Knuth 洗牌算法,可以看看这篇博客
  • 时间复杂度O(N),空间复杂度O(N)
class Solution {int[] nums;Random random = new Random();public Solution(int[] nums) {this.nums = nums;}// 直接返回原版本public int[] reset() {return nums;}// clone 一个原版本,然后进行洗牌算法:public int[] shuffle() {int[] ans = nums.clone();for(int i = 0; i < ans.length; i++) swap(ans, i, i + random.nextInt(ans.length - i));return ans;}void swap(int[] arr, int i, int j) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}
}

【LeetCode笔记 - 每日一题】384. 打乱数组(Java、洗牌算法)相关推荐

  1. Algorithm:C+语言实现之数组相关算法(和为定值的两个数、和为定值的m个数、荷兰国旗、长度为2n的洗牌算法、任意长度数组的洗牌算法)

    Algorithm:C+语言实现之数组相关算法(和为定值的两个数.和为定值的m个数.荷兰国旗.长度为2n的洗牌算法.任意长度数组的洗牌算法) 目录 数组 1.寻找和为定值的两个数 2.和为定值的m个数 ...

  2. 【LeetCode笔记 - 每日一题】375. 猜数字游戏 II (Java、DFS、动态规划)

    文章目录 题目描述 思路 && 代码 DFS 动态规划 新系列-用于区分开高频题和每日一题- 题目描述 一眼二分,但是实际上并不是 这题让我想到社团的猜数字游戏-但是给钱是真过分了= ...

  3. 【LeetCode笔记 - 每日一题】373. 查找和最小的 K 对数字(Java、堆、优先队列)

    文章目录 题目描述 思路 && 代码 题目描述 几天没打题,感觉脑子都是一团浆糊.... 升序:肯定得用这条件来优化复杂度 数对:用 int[2] 来表示 思路 && ...

  4. 【LeetCode笔记 - 每日一题】519. 随机翻转矩阵(Java、随机、双指针)

    文章目录 题目描述 思路 && 代码 题目描述 又是涉及到均等概率的随机- 思路 && 代码 用的题解区三叶的代码-写得是真的好!不论题目,但抄一遍代码都能觉得有收获! ...

  5. 【LeetCode笔记 - 每日一题】318. 最大单词长度乘积(Java、位运算)

    文章目录 题目描述 思路 && 代码 题目描述 挺不错!有bitmap的感觉了. 思路 && 代码 思路好想:两两对比,无公共判断,维护 res 那么,如何进行公共判断 ...

  6. 【LeetCode笔记 - 每日一题】334. 递增的三元子序列(Java、偏思路)

    文章目录 题目描述 思路 && 代码 题目描述 可以转换成300. 最长递增子序列,再看结果是否大于3 但上述写法O(N)复杂度实现不了,还是得用针对这道题的写法(见下) 思路 &am ...

  7. 【LeetCode笔记 - 每日一题】423. 从英文中重建数字(Java、字符串、偏思路)

    文章目录 题目描述 思路 && 代码 题目描述 看了题目以后想到啥? 字符数量统计 银行家算法逐个拆解 建立数字 - 字符串的全局映射 思路 && 代码 抄答案了,采取 ...

  8. 【LeetCode笔记】31. 下一个排列(Java、原地算法、偏数学)

    文章目录 题目描述 思路 && 代码 二刷 打卡第八天- 题目描述 需要花点时间思考的一道题,这篇题解写得很好. 思路 && 代码 主要分为这三个步骤: 从后往前找到满 ...

  9. leetcode 519. Random Flip Matrix | 519. 随机翻转矩阵(洗牌算法Fisher–Yates shuffle)

    题目 https://leetcode.com/problems/random-flip-matrix/ 题解 看了答案: 洗牌算法 Fisher–Yates shuffle Fisher–Yates ...

最新文章

  1. 当个新手很幸福!网络创业之新手小白一样可以吸粉又赚钱
  2. [转]计算机存储 cache介绍
  3. 剑指Kubernetes 揭秘腾讯云的PaaS技术选型策略
  4. java 数据结构_Java版-数据结构-队列(数组队列)
  5. KeyError: ‘segment_ids paddlehub中出现segement_ids错误解决方案
  6. 计算机硬件课题,课题:计算机硬件结构介绍
  7. (31)SystemVerilog语言编写D触发器
  8. 指数函数图像怎么画?
  9. pcan的dbc和project等的配置
  10. 万用表测占空比怎么接_万用表的占空比是什么意思?
  11. 五分钟学会PowerDesigner创建概念数据模型
  12. 解决go get i/o timeout的问题
  13. 网络编程 2 套接字socket
  14. IMU选型、标定误差分析、AHRS组合导航
  15. Android之友盟多渠道打包与数据统计(非原创)
  16. 梯度消失和梯度爆炸问题解析
  17. C语言字符串函数strcat | strcpy | strlen | strcmp的用法及原型
  18. html页面内容分页【转】
  19. 梯度下降法python
  20. 100道linux运维笔试题

热门文章

  1. java获取数据库连接语句_JAVA连接数据库语句
  2. oracle13001,安装oracle11g 遇到INS-13001环境不知足最低要求 解决方法
  3. oracle 根据分隔符提取,oracle使用指定分隔符导出数据到文件
  4. C++中set和map的erase用法
  5. tf.train.get_checkpoint_state
  6. 吴恩达《机器学习》学习笔记六——过拟合与正则化
  7. 给Sublime text2安装Zen Coding插件
  8. OllyDBG完美教程(超强入门级)
  9. Spring Data JPA 从入门到精通~查询结果的处理
  10. Struts2源码阅读(三)_DispatcherConfigurationProvider