如果奇数和偶数元素相等,则数组称为“ 切换 ”。

例子:

[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/

10-10 19:05