如何创建一个替换尽可能少的整数的之字形数组:Python

问题描述

我之前发过一个帖子,但措辞不好。这是我必须解决的问题才能获得面试:

给定一个整数数组,以这样的方式改变它,使其遵循锯齿形图案。锯齿形数组是其中每个整数的相邻整数都大于或小于自身的数组。换句话说,使用 L 表示较低的值,使用 H 表示较高的值,数组遵循模式 [L,H,L,H...] 或 [H,L...]。要使数组成为锯齿形数组,您可以将任何元素替换为任何其他整数(正数、负数或零)。完成此操作所需的最少更换次数是多少?

示例

arr =  [1,2,3,4,5]
LHLHL: [1,-,-]
HLHLH: [+,5]

correct answer = 2 
arr =   [1,5,6]
LHLHLH: [1,6]
HLHLHL: [+,-]

correct answer = 2

到目前为止我所拥有的

def minoperations(arr)-> int:
    def helper1(orgn):
        tmp=0
        #find all the values which can be raised to solve the problem
        for i in range(orgn,len(arr)-1,2):
            tmp+=(max(arr[i-1],arr[i+1])>=arr[i])
        return tmp
    return min(helper1(0),helper1(1))

一般来说,它适用于较小的数组,但它无法通过具有 100-1000 左右值的较长数组的测试用例。

我觉得我很接近,走在正确的道路上。我想知道需要添加什么。任何提示、技巧等都将不胜感激!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)