给定一个随机的整数(可能存在正整数和负整数)数组 nums,请你在该数组中找出两个数,其和的绝对值(|nums[x]+nums[y]|)为最小值,并返回这个两个数(按从小到大返回)以及绝对值。
每种输入只会对应一个答案。
但是,数组中同一个元素不能使用两遍。
一个通过空格分割的有序整数序列字符串,最多1000个整数,且整数数值范围是 [-65535, 65535]。
两数之和绝对值最小值。
function findMin(nums) {
// 用于保存当前最小的绝对值和
let sum = 65535 * 2;
// 保存找到的两个数的索引
let arr = [0, 0];
// 排序
nums.sort((a, b) => a - b);
for (let i = 0; i < nums.length; i++) {
for (let j = i + 1; j < nums.length; j++) {
// 计算绝对值
const temp = Math.abs(nums[i] + nums[j]);
if (temp <= sum) {
// 更新 sum = temp
sum = temp;
// 将当前索引 i 和 j 存入数组 arr
arr[0] = nums[i];
arr[1] = nums[j];
}
}
}
return [arr[0], arr[1], sum];
}
[5,-4,8,-9,10,12]
-4,5,1
下一篇:华为OD机试真题 JavaScript 实现【相对开音节】【2022Q4 100分】,附详细解题思路
本文收录于,华为OD机试(JavaScript)真题(A卷+B卷)
每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。