Scala 实现
题目描述:
给定一个随机的整数数组(可能存在正整数和负整数)nums。请你在该数组中找出两个数,其和的绝对值(|nums[x]+nums[y]|)为最小值。并返回这两个数(按从小到大返回)以及绝对值。每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
输入描述:
一个通过空格空格分割的有序整数序列字符串,最多1000个整数,且整数数值范围是[-65535,65535]
输出描述:
两个数和两数之和绝对值
示例:
输入:
-1 -3 7 5 11 15
输出:
-3 5 2
说明:
因为|nums[0]+nums[2]|=|-3+5|=2最小,所以返回-3 5 2
代码:
def main(args: Array[String]): Unit = { // 获取输入 val nums = StdIn.readLine().split(" ").map(_.toInt) // 计算最小绝对值 var minSum = 65535 var length = 0 var res = new Tuple3[Int, Int, Int](0, 0, 0) while (length < nums.length) { for (i <- length until nums.length) { for (j <- length + 1 until nums.length) { val num1 = nums(i) val num2 = nums(j) if (minSum > Math.abs(num1 + num2)) { // 将值按大小放入 Tuple3 中 res = Tuple3(Math.min(num1, num2), Math.max(num1, num2), Math.abs(num1 + num2)) // 更新最小值 minSum = Math.min(minSum, Math.abs(num1 + num2)) } } } // 进行下次循环的开始位置 length += 1 } // 输出结果 println(s"${res._1} ${res._2} ${res._3}") }
❤️ END ❤️
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)