我正在尝试在Kotlin
中实现一个简单的算法,它只能在数组中找到唯一的数字。
我无法弄清楚如何使用值等于1的元素将map
转换为uniqueArray
。
val array: IntArray = intArrayOf(4, 7, 3, 3, 4, 5)
val map: HashMap<Int, Int> = HashMap()
for (x in array) map.merge(x, 1, {v, _ -> v + 1})
// convert the map into an IntArray
val uniqueArray: IntArray = ...
答案 0 :(得分:1)
您可以使用filter
并将结构输入到键和值中,如下所示:
val uniqueArray: IntArray = map
.filter { (k, v) -> v == 1 }
.keys
.toIntArray()
答案 1 :(得分:1)
这是一个完整的算法,不涉及计算实例:
val input = intArrayOf(4, 7, 3, 3, 4, 5)
val duplicates = emptySet<Int>().toMutableSet()
val result = emptySet<Int>().toMutableSet()
for (it in input) {
if (duplicates.contains(it)) {
continue
}
if (!result.add(it)) {
result.remove(it)
duplicates.add(it)
}
}