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 |
|