"""
设计:Python程序设计
作者:初学者
日期:2022年 04月 03日
"""
# 例83 不下降数组 普通
# 1.问题描述
# 一个数组中,如果array[i]<=array[i+1]对于每一个i(1<=i<n)都成立则该数组是不下降的。
# 给定一个包含n个整数的数组,检测在改变至多1个元素的情况下,它是否可以变成不下降的。
# 2.问题示例
# 输入[4,2,3],输出True,因为可以把第1个修改为1,从而得到一个不下降数组。输入[4,2,1],
# 输出False,因为在修改至多1个元素的情况下,无法得到一个不下降数组。
# 3.代码实现
#
class Solution:
"""
参数array:数组
返回布尔类型
"""
def decline_array(self, array):
count = 0
for i in range(1, len(array)):
if array[i] < array[i - 1]:
count += 1
if i >= 2 and array[i] < array[i - 2]:
array[i] = array[i - 1]
else:
array[i - 1] = array[i]
return count <= 1
# 主函数
if __name__ == '__main__':
s = Solution()
nums1 = [4, 2, 3]
nums2 = [4, 2, 1]
print("输入:", nums1)
print("输入:", nums2)
print("输出:", s.decline_array(nums1))
print("输出:", s.decline_array(nums2))
不下降数组的进阶
class Solution:
"""
参数array:数组
返回布尔类型
"""
def __init__(self, array):
self.array = array
def decline_array(self):
count = 0
for i in range(1, len(self.array)):
if self.array[i] < self.array[i - 1]:
count += 1
if i >= 2 and self.array[i] < self.array[i - 2]:
self.array[i] = self.array[i - 1]
else:
self.array[i - 1] = self.array[i]
return count <= 1
# 主函数
if __name__ == '__main__':
s = Solution([4, 2, 3])
s2 = Solution([4, 2, 1])
print("输出:", s.decline_array())
print("输出:", s2.decline_array())