在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ Given two non-negative integers Return a list of all powerful integers that have value less than or equal to You may return the answer in any order. In your answer, each value should occur at most once. Example 1: Input: x = 10
Output: [2,3,4,5,7,9,10]
Explanation:
2 = 2^0 + 3^0
3 = 2^1 + 3^0
4 = 2^0 + 3^1
5 = 2^1 + 3^1
7 = 2^2 + 3^1
9 = 2^3 + 3^0
10 = 2^0 + 3^2
Example 2: Input: x = 15
Output: [2,4,6,8,10,14]
Note:
给定两个非负整数 返回值小于或等于 你可以按任何顺序返回答案。在你的回答中,每个值最多出现一次。 示例 1: 输入:x = 2, y = 3, bound = 10 输出:[2,3,4,5,7,9,10] 解释: 2 = 2^0 + 3^0 3 = 2^1 + 3^0 4 = 2^0 + 3^1 5 = 2^1 + 3^1 7 = 2^2 + 3^1 9 = 2^3 + 3^0 10 = 2^0 + 3^2 示例 2: 输入:x = 3, y = 5, bound = 15 输出:[2,4,6,8,10,14] 提示:
8ms 1 class Solution { 2 func powerfulIntegers(_ x: Int, _ y: Int, _ bound: Int) -> [Int] { 3 var xs:[Int] = [1] 4 var ys:[Int] = [1] 5 6 if x > 1 7 { 8 var p:Int = x 9 while(p <= bound) 10 { 11 xs.append(p) 12 p *= x 13 } 14 } 15 16 if y > 1 17 { 18 var p:Int = y 19 while(p <= bound) 20 { 21 ys.append(p) 22 p *= y 23 } 24 } 25 26 var s:Set<Int> = Set<Int>() 27 for xx in xs 28 { 29 for yy in ys 30 { 31 if xx + yy <= bound 32 { 33 s.insert(xx + yy) 34 } 35 } 36 } 37 return Array(s) 38 } 39 } 8ms 1 class Solution { 2 func powerfulIntegers(_ x: Int, _ y: Int, _ bound: Int) -> [Int] { 3 var res = [Int]() 4 var xx = [Int]() 5 var yy = [Int]() 6 if x == 0 { 7 xx = [0] 8 } else if x == 1 { 9 xx = [1] 10 } else { 11 xx.append(1) 12 var tmp = x 13 while tmp <= bound { 14 xx.append(tmp) 15 tmp *= x 16 } 17 } 18 19 if y == 0 { 20 yy = [0] 21 } else if y == 1 { 22 yy = [1] 23 } else { 24 yy.append(1) 25 var tmp = y 26 while tmp <= bound { 27 yy.append(tmp) 28 tmp *= y 29 } 30 } 31 32 var tmp = 0 33 34 for i in xx { 35 for u in yy { 36 tmp = i + u 37 if !res.contains(tmp) && tmp <= bound { 38 res.append(tmp) 39 } 40 if tmp > bound { 41 break 42 } 43 } 44 } 45 46 return res 47 } 48 } 16ms 1 class Solution { 2 func powerfulIntegers(_ x: Int, _ y: Int, _ bound: Int) -> [Int] { 3 var result = [Int]() 4 helper(x, y, 0, 0, bound, &result) 5 return result 6 } 7 8 func helper(_ x: Int, _ y: Int, _ powerX: Int, _ powerY: Int, _ bound: Int, _ result :inout [Int]) { 9 let sum = Int(pow(Double(x), Double(powerX)) + pow(Double(y), Double(powerY))) 10 if sum > bound { 11 return 12 } 13 14 if !result.contains(sum) { 15 result.append(sum) 16 } 17 18 if x > 1 { 19 helper(x, y, powerX + 1, powerY, bound, &result) 20 } 21 22 if y > 1 { 23 helper(x, y, powerX, powerY + 1, bound, &result) 24 } 25 } 26 } 20ms 1 class Solution { 2 func powerfulIntegers(_ x: Int, _ y: Int, _ bound: Int) -> [Int] { 3 if (x <= 0 && y <= 0) || (x == 1 && y == 0) || (x == 0 && y == 1) || (x == 1 && y == 1) { 4 let a = Int(pow(Double(x), 0.0) + pow(Double(y), 0.0)) 5 let b = Int(pow(Double(x), 1.0) + pow(Double(y), 1.0)) 6 let c = Int(pow(Double(x), 1.0) + pow(Double(y), 0.0)) 7 let d = Int(pow(Double(x), 0.0) + pow(Double(y), 1.0)) 8 var s = Set<Int>() 9 s.insert(a) 10 s.insert(b) 11 s.insert(c) 12 s.insert(d) 13 var arr = [Int]() 14 for n in s { 15 if n <= bound { 16 arr.append(n) 17 } 18 } 19 return arr 20 } 21 var s = Set<Int>() 22 var p1 = 0 23 var sum = 0 24 var count = 0 25 out: while true { 26 var p2 = 0 27 while sum <= bound { 28 sum = Int(pow(Double(x), Double(p1))) + Int(pow(Double(y), Double(p2))) 29 p2 += 1 30 if sum <= bound { 31 s.insert(sum) 32 } 33 count += 1 34 if count > 3000 { 35 break out 36 } 37 } 38 p1 += 1 39 sum = Int(pow(Double(x), Double(p1))) + Int(pow(Double(y), Double(0))) 40 if sum <= bound { 41 42 } else { 43 break 44 } 45 } 46 return Array(s) 47 } 48 }
|
请发表评论