def find_peak_trough_differences(nums):
# 边界检查
if len(nums) < 3:
return []
differences = []
# 遍历列表以找到峰值并计算差值
for i in range(1, len(nums) - 1):
# 检查当前元素是否为峰值
if nums[i] > nums[i - 1] and nums[i] > nums[i + 1]:
# 查找左侧谷值
left_trough = nums[i - 1]
for j in range(i - 1, -1, -1):
if j != 0:
if nums[j] < nums[j + 1] and nums[j]<nums[j-1] :
left_trough = nums[j]
break
else:
left_trough = nums[0]
# 查找右侧谷值
right_trough = nums[i + 1]
for k in range(i+1, len(nums)):
if k!=len(nums)-1:
if nums[k] < nums[k - 1] and nums[k]<nums[k+1]:
right_trough = nums[k]
break
else:
right_trough = nums[-1]
# 计算差值并添加到列表中
differences.append(nums[i] - left_trough)
differences.append(nums[i] - right_trough)
return differences
# 测试代码
nums = [1, 3, 5, 4, 2, 8, 10, 9, 7, 6]
# nums = [10,7,6,5,8,9,12,6,7,8,13,2,1]
print(find_peak_trough_differences(nums))
结果为5-1,5-2,10-2,10-6