[Swift Weekly Contest 118]LeetCode970. 強整數 | Powerful Integers
阿新 • • 發佈:2019-01-06
Given two non-negative integers x
and y
, an integer is powerful if it is equal to x^i + y^j
for some integers i >= 0
and j >= 0
.
Return a list of all powerful integers that have value less than or equal to bound
.
You may return the answer in any order. In your answer, each value should occur at most once.
Example 1:
Input: x = 2, y = 3, bound = 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 = 3, y = 5, bound = 15
Output: [2,4,6,8,10,14]
Note:
1 <= x <= 100
1 <= y <= 100
0 <= bound <= 10^6
給定兩個非負整數 x
和 y
,如果某一整數等於 x^i + y^j
,其中整數 i >= 0
且 j >= 0
,那麼我們認為該整數是一個強整數。
返回值小於或等於 bound
的所有強整數組成的列表。
你可以按任何順序返回答案。在你的回答中,每個值最多出現一次。
示例 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]
提示:
1 <= x <= 100
1 <= y <= 100
0 <= bound <= 10^6
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 }