📌  相关文章
📜  插入最多一个整数后最长的子段的长度为UpDown(1)

📅  最后修改于: 2023-12-03 15:39:51.785000             🧑  作者: Mango

插入最多一个整数后最长的子段的长度为UpDown

在一个给定的整数数组中,插入一个整数会改变原数组的子段。插入最多一个整数后最长的子段的长度为UpDown。

思路
  1. 如果数组为空,则插入整数后的子段长度为1。
  2. 对于每个位置,检查它前面和后面的数字,计算在这个位置插入整数后的最长子段长度。
  3. 返回计算后的最大值。
代码实现
def up_down(lst, num):
    # 如果数组为空,则插入整数后的子段长度为1
    if not lst:
        return 1

    max_len = 1
    for i in range(len(lst)):
        # 计算在这个位置插入整数后的最长子段长度
        left = lst[:i] + [num] + lst[i:]
        j = 0
        while j + 1 < len(left) and left[j] <= left[j+1]:
            j += 1
        k = len(left) - 1
        while k - 1 >= 0 and left[k-1] >= left[k]:
            k -= 1
        max_len = max(max_len, k - j - 1)

    return max_len
示例
print(up_down([1, 2, 3, 2, 1], 4))  # 输出 5
print(up_down([1, 2, 3, 2, 1], 7))  # 输出 3