2815. 数组中的最大数对和
题目描述
给你一个下标从 0 开始的整数数组 nums
。请你从 nums
中找出和 最大 的一对数,且这两个数数位上最大的数字相等。
返回最大和,如果不存在满足题意的数字对,返回 -1
。
示例 1:
输入:nums = [51,71,17,24,42] 输出:88 解释: i = 1 和 j = 2 ,nums[i] 和 nums[j] 数位上最大的数字相等,且这一对的总和 71 + 17 = 88 。 i = 3 和 j = 4 ,nums[i] 和 nums[j] 数位上最大的数字相等,且这一对的总和 24 + 42 = 66 。 可以证明不存在其他数对满足数位上最大的数字相等,所以答案是 88 。
示例 2:
输入:nums = [1,2,3,4] 输出:-1 解释:不存在数对满足数位上最大的数字相等。
提示:
2 <= nums.length <= 100
1 <= nums[i] <= 104
解法
方法一:枚举
我们先初始化答案变量 $ans = -1$。接下来,直接枚举所有的数对 $(nums[i], nums[j])$,其中 $i \lt j$,并计算它们的和 $v = nums[i] + nums[j]$。如果 $v$ 比 $ans$ 更大,并且 $nums[i]$ 和 $nums[j]$ 的最大数字相同,那么我们就用 $v$ 更新 $ans$。
时间复杂度 $O(n^2 \times \log M)$,其中 $n$ 是数组的长度,而 $M$ 是数组中的最大值。
1 2 3 4 5 6 7 8 9 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|