问题描述
我之前发过一个帖子,但措辞不好。这是我必须解决的问题才能获得面试:
给定一个整数数组,以这样的方式改变它,使其遵循锯齿形图案。锯齿形数组是其中每个整数的相邻整数都大于或小于自身的数组。换句话说,使用 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 (将#修改为@)