问题:
![]()
方法:
遍历数组一遍,通过占坑法记录出现过的数字,重复出现的位置设为负数,最后获取到重复的数字,然后可以根据和的关系计算出缺失的数字。
具体实现:
class SetMismatch {
fun findErrorNums(nums: IntArray): IntArray {
val result = mutableListOf<Int>()
var sum = 0
for (value in nums) {
val num = Math.abs(value)
if (nums[num - 1] < 0) {
result.add(num)
} else {
nums[num - 1] *= -1
}
sum += num
}
result.add(nums.size * (nums.size + 1) / 2 - sum + result[0])
return result.toIntArray()
}
}
fun main(args: Array<String>) {
val setMismatch = SetMismatch()
CommonUtils.printArray(setMismatch.findErrorNums(intArrayOf(8, 7, 3, 5, 3, 6, 1, 4)).toTypedArray())
}
有问题随时沟通
网友评论