[Swift]LeetCode470. 用 Rand7() 实现 Rand10() | Implement Ran
发布时间:2020-12-14 05:04:56 所属栏目:百科 来源:网络整理
导读: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
Given a function? Do NOT use system‘s? Example 1: Input: 1
Output: [7]
Example 2: Input: 2
Output: [8,4]
Example 3: Input: 3
Output: [8,1,10]?
Note:
Follow up:
已有方法? 不要使用系统的? 示例 1: 输入: 1 输出: [7] 示例 2: 输入: 2 输出: [8,4] 示例 3: 输入: 3 输出: [8,10]? 提示:
进阶:
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 } 44ms1 /** 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 } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |