小明非常喜欢研究数字,他注意到在已知一组整数中,有这样一种数非常怪,它们不在第一个,也不在最后一个,而且刚好都比左边和右边相邻的数大,这就是"支撑数"。 请你编写一个程序,输入一个包含n个数字的数组,输出其中所有的“支撑数”及其在数组中的索引位置。
时间: 2024-02-05 19:11:49 浏览: 45
好的,我可以帮你解决这个问题。以下是 Python 代码实现:
```python
def find_supporting_numbers(arr):
n = len(arr)
res = []
for i in range(1, n - 1):
if arr[i] > arr[i-1] and arr[i] > arr[i+1]:
res.append((arr[i], i))
return res
# 测试
arr = [1, 2, 3, 5, 4, 7, 6, 9, 8]
print(find_supporting_numbers(arr)) # [(3, 2), (7, 5), (9, 7)]
```
代码思路:
首先,对于一个长度为 n 的数组,它的第一个和最后一个元素都不可能是支撑数,因为它们没有左边或右边的相邻数。因此,我们从第二个元素开始遍历到倒数第二个元素。
对于第 i 个元素,如果它比它的左边和右边的相邻元素都要大,那么它就是一个支撑数,将它的值和索引加入结果列表中。
最后返回结果列表即可。
希望能对你有所帮助!
阅读全文