【问题描述】[Leedcode][JAVA][第470题][Ran7()实现Rand10()]

已有方法 rand7 可生成 1 到 7 范围内的均匀随机整数,试写一个方法 rand10 生成 1 到 10 范围内的均匀随机整数。不要使用系统的 Math.random() 方法。示例 1:输入: 1
输出: [7]
示例 2:输入: 2
输出: [8,4]
示例 3:输入: 3
输出: [8,1,10]提示:rand7 已定义。
传入参数: n 表示 rand10 的调用次数。链接:https://leetcode-cn.com/problems/implement-rand10-using-rand7

【解答思路】

1. 数学大法好

public int rand10() {// 首先得到一个数int num = (rand7() - 1) * 7 + rand7();// 只要它还大于40,那你就给我不断生成吧while (num > 40)num = (rand7() - 1) * 7 + rand7();// 返回结果,+1是为了解决 40%10为0的情况return 1 + num % 10;
}作者:jerry_nju
链接:https://leetcode-cn.com/problems/implement-rand10-using-rand7/solution/xiang-xi-si-lu-ji-you-hua-si-lu-fen-xi-zhu-xing-ji/
2. 时间复杂度:O(N) 空间复杂度:O(1)

【总结】

1.了解过度的精妙之处
2.善用% /
3.数学的世界真奇妙!

转载链接(逐步优化超级精彩,建议查看原文 ):https://leetcode-cn.com/problems/implement-rand10-using-rand7/solution/xiang-xi-si-lu-ji-you-hua-si-lu-fen-xi-zhu-xing-ji/

[Leedcode][JAVA][第470题][Ran7()实现Rand10()]相关推荐

  1. [Leedcode][JAVA][第105题][从前序与中序遍历序列构造二叉树][栈][递归][二叉树]

    [问题描述][中等] 根据一棵树的前序遍历与中序遍历构造二叉树.注意: 你可以假设树中没有重复的元素.例如,给出前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = ...

  2. [Leedcode][JAVA][第45题][跳跃游戏 II][贪心算法]

    [问题描述][Leedcode][JAVA][第45题][跳跃游戏 II] 输入: [2,3,1,1,4] 输出: 2 解释: 跳到最后一个位置的最小跳跃数是 2.从下标为 0 跳到下标为 1 的位置 ...

  3. [Leedcode][JAVA][第300题][最长上上子序列][动态规划][压缩空间]

    [问题描述][中等] 给定一个无序的整数数组,找到其中最长上升子序列的长度.示例:输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它 ...

  4. [Leedcode][JAVA][第680题][验证回文字符串Ⅱ][贪心][递归]

    [问题描述][第680题][验证回文字符串Ⅱ][简单] 给定一个非空字符串 s,最多删除一个字符.判断是否能成为回文字符串.示例 1:输入: "aba" 输出: True 示例 2 ...

  5. [Leedcode][JAVA][第210 题][课程表 II][拓扑排序][BFS][DFS][有向图]

    [问题描述][第210 题][课程表 II][中等] 现在你总共有 n 门课需要选,记为 0 到 n-1.在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用 ...

  6. [Leedcode][JAVA][第25题][K个一组反转链表][链表][递归]

    [问题描述][第25题][K个一组反转链表][困难] 时间复杂度:O(N^2) 空间复杂度:O(1) ```java 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表.k 是一个正整数, ...

  7. [Leedcode][JAVA][第560题][和为K的子数组][Hashmap][数组]

    [问题描述][第560题][和为K的子数组][中等] 给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数.示例 1 :输入:nums = [1,1,1], k = 2 输 ...

  8. [Leedcode][JAVA][第102题][二叉树的层序遍历][递归][迭代][BFS]

    [问题描述][第102题][二叉树的层序遍历][中等] 给你一个二叉树,请你返回其按 层序遍历 得到的节点值. (即逐层地,从左到右访问所有节点).示例: 二叉树:[3,9,20,null,null, ...

  9. [Leedcode][JAVA][第50题][Pow(x, n)][快速幂][分治][转换类型]

    [问题描述][第50题][Pow(x, n)][中等] 实现 pow(x, n) ,即计算 x 的 n 次幂函数.输入: 2.10000, 3 输出: 9.26100 示例 3:输入: 2.00000 ...

最新文章

  1. 【读书笔记】代码可为维护性标准(一)
  2. Spring boot 默认日志配置
  3. SpringBoot之MongoTemplate的查询可以怎么耍
  4. Linux的网络管理命令使用总结
  5. python使用pillow下载网络图片到本地预览
  6. 全国计算机二级ms office知识点,2017全国计算机二级MSOffice复习知识点
  7. [Java] 蓝桥杯 BASIC-9 基础练习 特殊回文数
  8. mysql2005安装asp_asp连接sql server2005数据库
  9. 脑子好,蹦两下!--程序员应该玩的小游戏
  10. GPU 编程 CPU 异同点_专业软件与CPU的性能相关性详细对比
  11. 百度杀毒软件2013低调发布
  12. 16个超牛逼的HTML5和JavaScript特效
  13. omnet++tictoc3案例解析
  14. 硬件设计28之RS422、RS485
  15. Navicat因导入的sql文件中时间数据类型有参数而报错的原因(例:datetime(3))
  16. 艾洛积分系统(Elo Rating System)
  17. 说说Base 理论是什么?
  18. Июль 2022 Рейтинг российских баз данных: ClickHouse на первом месте, GigaBASE на втором
  19. 解决桌面图标或者开始菜单图标不能正确显示问题
  20. sql注入php代码审计1

热门文章

  1. Android中如何下载文件并显示下载进度
  2. Java源代码分析与生成
  3. MySql命令——命令行客户机的分隔符
  4. Python爬虫自学之第(⑤)篇——爬取某宝商品信息
  5. Android studio ERROR: Software caused connection abort: recv failed 解决方法
  6. Android GridView,recycleview,栅格布局
  7. docker 安装 centos
  8. js判断函数是否存在
  9. Microsoft Team Foundation Server 2010安装指南
  10. linux 编译多个文件,linux gcc编译多个源文件的方法