如何判断列表是否为非递减升序序列并返回对应布尔值
功能实现(Python版本)
注意事项
不要使用list作为自定义变量名,这是Python内置的列表类型关键字,覆盖后会影响默认列表方法的调用。
方案1:简洁写法(推荐)
利用zip配对相邻元素,配合all()函数判断所有相邻元素是否满足条件,时间复杂度O(n),空间复杂度O(1)。
def check_non_decreasing(input_list): # 长度<=1的列表天然满足条件 if len(input_list) <= 1: return True return all(prev <= curr for prev, curr in zip(input_list, input_list[1:]))
测试示例:
# 测试符合要求的列表 test1 = [0, 1, 8 , 10, 14, 16] print(check_non_decreasing(test1)) # 输出 True # 测试存在逆序的列表 test2 = [5, 3, 9, 1] print(check_non_decreasing(test2)) # 输出 False
方案2:基础循环写法
适合需要在遍历过程中添加额外逻辑的场景,逻辑更直观:
def check_non_decreasing(input_list): for i in range(len(input_list) - 1): if input_list[i] > input_list[i+1]: return False return True
内容的提问来源于stack exchange,提问作者Néstor Román Domínguez Moreno
相关产品推荐
相关产品推荐

