当前位置:首页>python>数组的下标控制|Python 找 “支撑数”,新手也能秒懂

数组的下标控制|Python 找 “支撑数”,新手也能秒懂

  • 2026-10-11 07:30:35
数组的下标控制|Python 找 “支撑数”,新手也能秒懂

一、题目背景

在一组整数里,有一种特殊的数:

✅ 不在第一个,也不在最后一个

✅ 刚好比左边、右边相邻的数都大

我们把这种数叫做支撑数,一起来用 Python 把它们找出来吧!


二、题目信息

输入

  1. 第一行:整数m(表示整数个数,3 ≤ m ≤ 100)
  2. 第二行:m个整数,用空格隔开

输出

找到的每个支撑数,每行输出一个。


三、解题思路(超通俗版)

  1. 先读入数据
    :先读总个数,再把所有数字存成一个列表
  2. 确定遍历范围
    :不用看第一个和最后一个数,只看中间的
  3. 判断条件
    :当前数 > 左边邻居,且当前数 > 右边邻居
  4. 输出结果
    :满足条件就直接打印

四、完整代码(可直接复制运行)

# 1. 读取输入数据m = int(input("请输入整数的个数:"))nums = list(map(int, input("请输入这些整数,用空格隔开:").split()))# 2. 遍历数组,找出支撑数print("找到的支撑数:")for i in range(1, m - 1):  # 从第2个到倒数第2个元素    left = nums[i-1]    current = nums[i]    right = nums[i+1]    if current > left and current > right:        print(current)

五、代码分步拆解(小白友好)

① 读取输入

m = int(input())  # 读取数字个数nums = list(map(int, input().split()))  # 把输入的字符串转成整数列表

小提示:map(int, ...)会把输入的每个字符串转成整数,list()把它们变成列表,方便后续操作。

② 遍历中间元素

for i in range(1, m - 1):
  • 列表索引从0开始,所以第一个元素索引是0,最后一个是m-1
  • range(1, m-1)
    表示从索引1(第二个元素)到m-2(倒数第二个元素),刚好跳过首尾

③ 判断支撑数

left = nums[i-1]current = nums[i]right = nums[i+1]if current > left and current > right:    print(current)
  • 用变量left和right分别存左右邻居,代码更易读
  • 满足条件就直接打印,每行输出一个,符合题目要求

六、运行示例

输入

51 3 2 4 1

输出

找到的支撑数:34

 解析:

  • 索引1的数字3:比左边1、右边2都大,是支撑数
  • 索引3的数字4:比左边2、右边1都大,是支撑数

七、易错点提醒

  1. 遍历范围错误
    :不要把首尾元素也放进循环里判断,它们没有邻居
  2. 索引越界
    :range的结束位置是m-1,所以循环里的i最大是m-2,避免nums[i+1]超出列表长度
  3. 条件写反
    :一定要是current > left且current > right,别写成小于哦

最新文章

随机文章