如果奇数和偶数元素相等,则数组称为“ 切换 ”。
例子:
[2,4,2,4] 是一个切换数组,因为偶数位置(索引 0 和 2)和奇数位置(索引 1 和 3)的成员相等。
如果 A = [3,7,3,7, 2, 1, 2] ,则切换子阵列为:
== > [3,7,3,7] 和 [2,1,2]
因此,最长的切换子阵列是 [3,7,3,7] ,其中 长度 = 4。
作为另一个例子,如果 A = [1,5,6,0,1,0] ,唯一的切换子阵列是 [0,1,0] 。
又如: A= [7,-5,-5,-5,7,-1,7] ,切换子阵列为 [7,-1,7] 和 [-5,- 5,-5] 。
问题:
编写一个接收数组并找到其最长切换子数组的函数。
我想知道您是如何解决这个问题的,以及您使用哪些策略来以良好的时间复杂度解决这个问题?
最佳答案
我假设数组是零索引的。
if arr.size <= 2
return arr.size
else
ans = 2
temp_ans = 2 // We will update ans when temp_ans > ans;
for i = 2; i < arr.size ; ++i
if arr[i] = arr[i-2]
temp_ans = temp_ans + 1;
else
temp_ans = 2;
ans = max(temp_ans , ans);
return ans;
我认为这应该有效,我认为不需要任何解释。
Example Code
关于arrays - 具有开关元件的最长子阵列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58357037/