題目在這里盔憨,現(xiàn)有1-100這100個(gè)數(shù)字洗搂,隨機(jī)去掉兩個(gè)數(shù)字后亂序存到了數(shù)組a中热康,請(qǐng)實(shí)現(xiàn)一個(gè)函數(shù),入?yún)閿?shù)組a劣领,打印出被去掉的這兩個(gè)數(shù)字姐军。
思路:
1.排序
2.創(chuàng)建一個(gè)1~100的數(shù)組
3.對(duì)比兩個(gè)數(shù)組
// 代碼如下
func searchRemoved(arr:Array<Int>, originalCount:Int) -> Array<Int> {
if originalCount <= 0 {
return []
}
let sortedArr = arr.sorted { n, m in
return n < m
}
var perfert = [Int]()
for i in 0 ..< originalCount {
perfert.append(i+1)
}
var result = [Int]()
var m = 0 // big
var n = 0 // small
while m < originalCount && n < sortedArr.count {
if perfert[m] < sortedArr[n] {
result.append(perfert[m])
m += 1
} else if perfert[m] > sortedArr[n] {
// 不應(yīng)該出現(xiàn)這種情況
n += 1
print("error")
} else {
// 二者相等
m += 1
n += 1
}
}
let needFix = originalCount - (sortedArr.count + result.count)
if needFix > 0{
for i in 0 ..< needFix {
if sortedArr.last != nil {
result.append(sortedArr.last! + i + 1)
}
}
}
return result
}
// test
let test_1 = [7,2,3,5]
let result_1 = searchRemoved(arr: test_1, originalCount: 10)
print("test_1:\(test_1)\tresult:\(result_1)")
let test_2 = [3,4]
let result_2 = searchRemoved(arr: test_2, originalCount: 10)
print("test_1:\(test_2)\tresult:\(result_2)")
let test_3 = [5]
let result_3 = searchRemoved(arr: test_3, originalCount: 10)
print("test_1:\(test_3)\tresult:\(result_3)")
let test_4 = [5]
let result_4 = searchRemoved(arr: test_4, originalCount: 0)
print("test_1:\(test_4)\tresult:\(result_4)")
// log
test_1:[7, 2, 3, 5] result:[1, 4, 6, 8, 9, 10]
test_1:[3, 4] result:[1, 2, 5, 6, 7, 8, 9, 10]
test_1:[5] result:[1, 2, 3, 4, 6, 7, 8, 9, 10]
test_1:[5] result:[]