如何检查 Kotlin 中的三个数字是否不同?
How to check if three numbers are different in Kotlin?
我正在 activity 学习我无法理解的 Kotlin。我是编码和 Kotlin 的新手,所以请原谅我的错误和缺乏知识。
这是activity的描述:
编写一个程序,读取三个数字并检查它们是否都不同(即没有数字等于任何其他数字)。
程序是输出true或false。
示例输入 1:
5
5
9
示例输出 1:
false
示例输入 2:
1
2
3
示例输出 2:
true
我尝试了不同的方法,但我 none 的方法都奏效了,所以如果有人能帮助我,我将不胜感激。
fun main() {
val num = readLine()!!.toInt()
val num1 = readLine()!!.toInt()
val num2 = readLine()!!.toInt()
}
构建一个列表,并从列表中创建一组。集合不能包含重复条目。现在比较列表和集合之间的元素数量。
val xs = listOf(num,num1,num2)
val result = xs.size == xs.toSet().size // true or false
如果总是三个数字你可以这样写:
val result = setOf(num, num1, num2).size == 3
在这里您只需检查每对是否不同。所以你想要这样的东西:
fun areAllDifferent(n1: Int, n2: Int, n3: Int) = /* n1 != n2 and n2 != n3 and n1 != n3 */
然后可以将其扩展为使用相同的逻辑比较 n 个数字,方法是遍历每一对并检查是否相等:
fun areAllDifferent(vararg numbers: Int) {
for (i in numbers.indices) {
for (j in numbers.indices) {
if (/* the ith and jth numbers are equal and i != j */) return false
}
return true
}
然而,为了获得更简洁的解决方案,我会看一下@Twistleton 的回答。它还具有较低的时间复杂度(O(n)
与 O(n<sup>2</sup>)
相比)但是请注意,它引入了额外的 space 复杂度 (O(n)
) 如果 n
很大。
我正在 activity 学习我无法理解的 Kotlin。我是编码和 Kotlin 的新手,所以请原谅我的错误和缺乏知识。
这是activity的描述:
编写一个程序,读取三个数字并检查它们是否都不同(即没有数字等于任何其他数字)。 程序是输出true或false。
示例输入 1:
5
5
9
示例输出 1:
false
示例输入 2:
1
2
3
示例输出 2:
true
我尝试了不同的方法,但我 none 的方法都奏效了,所以如果有人能帮助我,我将不胜感激。
fun main() {
val num = readLine()!!.toInt()
val num1 = readLine()!!.toInt()
val num2 = readLine()!!.toInt()
}
构建一个列表,并从列表中创建一组。集合不能包含重复条目。现在比较列表和集合之间的元素数量。
val xs = listOf(num,num1,num2)
val result = xs.size == xs.toSet().size // true or false
如果总是三个数字你可以这样写:
val result = setOf(num, num1, num2).size == 3
在这里您只需检查每对是否不同。所以你想要这样的东西:
fun areAllDifferent(n1: Int, n2: Int, n3: Int) = /* n1 != n2 and n2 != n3 and n1 != n3 */
然后可以将其扩展为使用相同的逻辑比较 n 个数字,方法是遍历每一对并检查是否相等:
fun areAllDifferent(vararg numbers: Int) {
for (i in numbers.indices) {
for (j in numbers.indices) {
if (/* the ith and jth numbers are equal and i != j */) return false
}
return true
}
然而,为了获得更简洁的解决方案,我会看一下@Twistleton 的回答。它还具有较低的时间复杂度(O(n)
与 O(n<sup>2</sup>)
相比)但是请注意,它引入了额外的 space 复杂度 (O(n)
) 如果 n
很大。