美文网首页
Python编程题12--列表中比前面元素都大,比后面元素都小的

Python编程题12--列表中比前面元素都大,比后面元素都小的

作者: wintests | 来源:发表于2020-10-07 09:42 被阅读0次

题目

给定一个无序列表,列表中元素均为不重复的整数。请找出列表中有没有比它前面元素都大,比它后面的元素都小的数,如果不存在则返回-1,存在则显示其索引。

实现思路1

  • 利用 列表 结合 max()min() 内置函数来实现
  • 遍历列表,并通过 max()min() 分别求出当前元素在列表左侧的最小数、在列表右侧的最大数
  • 比较当前元素,是否满足比前面元素都大,比后面元素都小的条件,如果符合则将其对应的索引下标添加到结果列表中

代码实现

def find_number_index(nums):
    if len(nums) < 1:
        return -1
    res = []
    for i in range(len(nums)):
        left_max, right_min = max(nums[:i+1]), min(nums[i:])
        if nums[i] >= left_max and nums[i] <= right_min:
            res.append(i)
    return res if res else -1

nums = [21, 11, 45, 56, 9, 66, 77, 89, 78, 68, 100, 120, 111]
print(find_number_index(nums))

实现思路2

  • 设置一个额外的列表 right_min_list ,倒序遍历原始列表,用于存储原始列表中每个元素从右到左的最小值 right_min
  • 设置一个额外的列表 left_max_list ,正序遍历原始列表,用于存储原始列表中每个元素从左到右的最大值 left_max
  • 对第一步中额外的列表 right_min_list ,进行反转
  • 正序遍历原始列表,对比 left_max_list 和 right_min_list 在相同索引下标的元素是否一致,如果一致则说明该元素满足条件

代码实现

def find_number_index(nums):
    if len(nums) < 1:
        return -1
    res, right_min_list = [], []
    right_min = nums[-1]
    for i in range(len(nums) - 1, -1, -1): # 倒序遍历
        if right_min > nums[i]:
            right_min = nums[i]
        right_min_list.append(right_min)
    left_max_list = []
    left_max = nums[0]
    for i in range(0, len(nums)):
        if left_max < nums[i]:
            left_max = nums[i]
        left_max_list.append(left_max)
        if left_max_list[i] == right_min_list[::-1][i]:
            res.append(i)
    return res if res else -1

nums = [21, 11, 45, 56, 9, 66, 77, 89, 78, 68, 100, 120, 111]
print(find_number_index(nums))

更多Python编程题,等你来挑战:Python编程题汇总(持续更新中……)

相关文章

  • Python编程题12--列表中比前面元素都大,比后面元素都小的

    题目 给定一个无序列表,列表中元素均为不重复的整数。请找出列表中有没有比它前面元素都大,比它后面的元素都小的数,如...

  • python实现数组操作

    实现列表 python中数组即为列表 初始化列表 读取元素 更新元素 插入元素 删除元素

  • day-07 容器类型(作业)

    第一题,已知列表,求其中心元素 第二题,已知列表,求其所有元素和 第三题,已知列表,输出所有奇数下表元素 第四题,...

  • 3-序列、列表、元组

    序列 序列就是一堆数据元素的集合,并对每个元素进行编号。在Python中,字符串、列表、元组都属于序列,他们都具有...

  • 迭代,列表生成式,生成器,迭代器

    列表生成式的用法 关于生成器:列表生成式可以直接创建一个列表。但如果仅需要访问前面几个元素,那后面元素占用的空间就...

  • Python入门第9课 - 切片

    前面讲到了如何访问列表的单个元素以及处理整个列表,接下来讲如何处理列表的部分元素,Python中称之为切片。 9....

  • 数据结构之线性表

    线性表 一 线性表特点 除第一个元素外,其他元素的前面都只有一个元素 除最后一个元素外,其他位置的数据后面都只有一...

  • 2018-08-27 day6

    1.列表 1.1 认识list(列表) 格式:[元素1,元素2,元素3]定义列表是python中的容器类型。有序的...

  • Python 列表

    列表是Python中的可变序列.在形式上,列表的所有元素都放在一对中括号[]中,两个相邻的元素间使用逗号 , 分隔...

  • 数据结构之选择排序(C语言)

    选择排序 :对比数组中前一个元素跟后一个元素的大小,如果后面的元素比前面的元素小,则用一个变量k来记住他的位置,接...

网友评论

      本文标题:Python编程题12--列表中比前面元素都大,比后面元素都小的

      本文链接:https://www.haomeiwen.com/subject/tmhhdktx.html