알고리즘
[Swift] find Two Missing Numbers
고고
2022. 1. 11. 14:45
파이썬과 함께하는 자료구조의 이해 연습문제 2장 20번
1. a+b 구하기
2. ab 구하기
3. a-b 구하기
4. a와 b 구하기
import Foundation
class Solution {
func missingTwoNumber(_ nums: [Int]) -> [Int] {
let numsCount = nums.count
let currentSum = (numsCount + 1) * (numsCount + 2) / 2
let numsSum = nums.reduce(0, +)
let ABSum = currentSum - numsSum // a + b
var BMultiple = 1
for i in nums {
if i == 0 { continue }
BMultiple *= i
}
let ABMultiple = (1...nums.count + 1).reduce(1, *) / BMultiple // ab
//(a-b)^2 = (a+b)^2-4ab
let square = abs(ABSum * ABSum - 4 * ABMultiple)
let diff = Int(sqrt(Double(square)))
// a + b = 10
// a - b = 2
// 2a = 12 , a = 6
let a = (ABSum + diff) / 2
let b = ABSum - a
return [b, a]
}
}
Solution().missingTwoNumber([0,1]) // 2, 3
Solution().missingTwoNumber([1,2,3,5,7,8,9,0]) // 4, 6
Find two Missing Numbers in Sequence of Consecutive Numbers | TutorialHorizon
Algorithms – Find two Missing Numbers in a Sequence of Consecutive Numbers
algorithms.tutorialhorizon.com