[Swift]LeetCode470. 用 Rand7() 实现 Rand10() | Implement Rand10() Using Rand7()
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/10347532.html
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
Given a function rand7
which generates a uniform random integer in the range 1 to 7, write a function rand10
which generates a uniform random integer in the range 1 to 10.
Do NOT use system's Math.random()
.
Example 1:
Input: 1
Output: [7]
Example 2:
Input: 2
Output: [8,4]
Example 3:
Input: 3
Output: [8,1,10]
Note:
rand7
is predefined.- Each testcase has one argument:
n
, the number of times thatrand10
is called.
Follow up:
- What is the expected value for the number of calls to
rand7()
function? - Could you minimize the number of calls to
rand7()
?
已有方法 rand7
可生成 1 到 7 范围内的均匀随机整数,试写一个方法 rand10
生成 1 到 10 范围内的均匀随机整数。
不要使用系统的 Math.random()
方法。
示例 1:
输入: 1 输出: [7]
示例 2:
输入: 2 输出: [8,4]
示例 3:
输入: 3 输出: [8,1,10]
提示:
rand7
已定义。- 传入参数:
n
表示rand10
的调用次数。
进阶:
rand7()
调用次数的 期望值 是多少 ?- 你能否尽量少调用
rand7()
?
Runtime: 44 ms
Memory Usage: 5.9 MB
1 /** 2 * The rand7() API is already defined in the parent class SolBase. 3 * func rand7() -> Int = {} 4 * @return a random integer in the range 1 to 7 5 */ 6 class Solution : SolBase { 7 func rand10() -> Int { 8 while(true) 9 { 10 var a:Int = rand7() 11 var b:Int = rand7() 12 var num:Int = (a - 1) * 7 + b 13 if num <= 40 {return num % 10 + 1} 14 a = num - 40 15 b = rand7() 16 num = (a - 1) * 7 + b 17 if num <= 60 {return num % 10 + 1} 18 a = num - 60 19 b = rand7() 20 num = (a - 1) * 7 + b 21 if num <= 20 {return num % 10 + 1} 22 } 23 } 24 }
44ms
1 /** 2 * The rand7() API is already defined in the parent class SolBase. 3 * func rand7() -> Int = {} 4 * @return a random integer in the range 1 to 7 5 */ 6 class Solution : SolBase { 7 func rand10() -> Int { 8 var a, b, no: Int? 9 repeat { 10 a = rand7() - 1 11 b = rand7() - 1 12 no = 7 * a! + b! 13 } while (no! > 39) 14 15 return (no! % 10) + 1 16 } 17 }
48 ms
1 /** 2 * The rand7() API is already defined in the parent class SolBase. 3 * func rand7() -> Int = {} 4 * @return a random integer in the range 1 to 7 5 */ 6 class Solution : SolBase { 7 func rand10() -> Int { 8 var num:Int = (rand7() - 1) * 7 + rand7() 9 return (num <= 40) ? (num % 10 + 1) : rand10() 10 } 11 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了