美文网首页
LeetCode之Set Mismatch(Kotlin)

LeetCode之Set Mismatch(Kotlin)

作者: 糕冷羊 | 来源:发表于2019-10-21 17:25 被阅读0次

问题:



方法:
遍历数组一遍,通过占坑法记录出现过的数字,重复出现的位置设为负数,最后获取到重复的数字,然后可以根据和的关系计算出缺失的数字。

具体实现:

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())
}

有问题随时沟通

具体代码实现可以参考Github

相关文章

网友评论

      本文标题:LeetCode之Set Mismatch(Kotlin)

      本文链接:https://www.haomeiwen.com/subject/yltxvctx.html