【编程题目 |100分】两数之和绝对值最小【2021 H2, 2022 Q2考试题】


时间限制:C/C++ 1秒,其他语言 2秒

空间限制:C/C++262144K,其他语言524288K

64bit IO Format:%lld


本题可使用本地IDE编码,不能使用本地已有代码,无跳出限制,

编码后请点击”保存并调试“按钮进行代码提交。


题目描述

【两数之和绝对值最小】

给定一个从小到大的有序整数序列(存在正整数和负整数)数组 nums ,请你在该数组中找出两个数,其和的绝对值(|nums[x]+nums[y]|)为最小值,并返回这个绝对值。
每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

输入描述:

一个通过空格分割的有序整数序列字符串,最多1000个整数,且整数数值范围是 -65535~65535。

输出描述:

两数之和绝对值最小值

示例1   输入输出示例仅供调试,后台判题数据一般不包含示例

输入

-3 -1 5 7 11 15

输出

2

说明

因为 |nums[0] + nums[2]| = |-3 + 5| = 2 最小,所以返回 2。


JAVA


public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] input = sc.nextLine().split(" ");
        int[] arr = new int[input.length];
        for (int i = 0; i < input.length; i++) {
            arr[i] = Integer.parseInt(input[i]);
        }
        int min = Integer.MAX_VALUE;
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr.length; j++) {
                min = Math.min(min,Math.abs(arr[i]+arr[j]));
            }
        }
        System.out.println(min);
    }
}

JavaScript


let nums = readLine().split(" ").map(Number);
隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看