[Swift]LeetCode470. 用 Rand7() 实现 Rand10() | Implement Rand10() Using Rand7()

[Swift]LeetCode470. 用 Rand7() 实现 Rand10() | Implement Rand10() Using Rand7(),第1张

概述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.ran

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: 1Output: [7] 

Example 2:

input: 2Output: [8,4] 

Example 3:

input: 3Output: [8,1,10] 

Note:

rand7 is predefined. Each testcase has one argument: n,the number of times that rand10is 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,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 + b13             if num <= 40 {return num % 10 + 1}14             a = num - 4015             b = rand7()16             num = (a - 1) * 7 + b17             if num <= 60 {return num % 10 + 1}18             a = num - 6019             b = rand7()20             num = (a - 1) * 7 + b21             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() - 111             b = rand7() - 112             no = 7 * a! + b!13         } while (no! > 39)14         15         return (no! % 10) + 116     }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 }
总结

以上是内存溢出为你收集整理的[Swift]LeetCode470. 用 Rand7() 实现 Rand10() | Implement Rand10() Using Rand7()全部内容,希望文章能够帮你解决[Swift]LeetCode470. 用 Rand7() 实现 Rand10() | Implement Rand10() Using Rand7()所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1020028.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存