一个整数数组,数组的长度区间为[2,100],数组中的每个数字的大小范围为[1,10^4],找出该数组的最大一对等高数,输出他们的和,如果数组中没有等高数则输出-1,代码
时间: 2024-09-21 13:11:48 浏览: 2
为了找到这个整数数组中最大的一对等高数并计算它们的和,你可以采用一种线性的扫描策略,遍历数组的同时维护两个变量,分别代表当前已知的最大和最小值。同时检查当前位置的数值是否等于已知的最大值,如果是,则更新和。
这是一个简单的Python代码示例:
```python
def find_max_equal_height_sum(arr):
if len(arr) < 2:
return -1
max_val = arr[0]
min_val = arr[0]
equal_height_sum = arr[0]
for num in arr[1:]:
# 如果遇到的数字等于最大值,加到总和上
if num == max_val:
equal_height_sum += num
# 更新最大值和最小值
max_val = max(max_val, num)
min_val = min(min_val, num)
# 检查是否有相等元素
if max_val != min_val:
return -1
else:
return equal_height_sum
# 示例数组
arr = [2, 2, 3, 3, 4, 4]
result = find_max_equal_height_sum(arr)
print(f"最大等高数的和是: {result}")
```
在这个例子中,我们首先初始化`max_val`和`min_val`为第一个元素,然后遍历数组。对于每个元素,如果它等于`max_val`,我们就将其加入`equal_height_sum`。最后,如果没有发现相同的元素,返回-1,否则返回最大等高数的和。