Compruebe si una array tiene alguna subsecuencia palindrómica de longitud de al menos 3

Dado es un arreglo Arr de enteros. La tarea es determinar si la array tiene alguna subsecuencia de al menos 3 de longitud que sea un palíndromo.
Ejemplos: 
 

Input: Arr[] = [1, 2, 1] 
Output: YES
Explanation:
Here 1 2 1 is a palindrome.

Input: Arr[] = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5]
Output: NO
Explanation:
Here no subsequence of length at least 3
exists which is a palindrome.

Acercarse: 
 

  • La idea es verificar solo la longitud 3 porque si existe una subsecuencia palindrómica de longitud mayor que 3, entonces siempre hay una subsecuencia palindrómica de longitud 3. 
     
  • Para encontrar la subsecuencia palindrómica de longitud 3 solo necesitamos encontrar un par de números iguales no adyacentes. 
     

A continuación se muestra la implementación del enfoque anterior:
 

C++

// C++ code to check if
// palindromic subsequence of
// length atleast 3 exist or not
#include<bits/stdc++.h>
using namespace std;
 
string SubPalindrome(int n, int arr[])
{
    bool ok = false;
    for (int i = 0; i < n; i++)
    {
        for(int j = i + 2; j < n; j++)
        {
            if(arr[i] == arr[j])
                ok = true;
        }
    }
    if(ok)
        return "YES";
    else
        return "NO";
}
     
 
// Driver code
int main()
{
 
    // Input values to list
    int Arr[] = {1, 2, 2, 3, 2};
     
    // Calculating length of array
    int N = sizeof(Arr)/sizeof(Arr[0]);
     
    cout << SubPalindrome(N, Arr);
}
 
// This code is contributed by Bhupendra_Singh

Java

// Java code to check if
// palindromic subsequence of
// length atleast 3 exist or not
 
import java.util.*;
 
class GFG{
  
static String SubPalindrome(int n, int arr[])
{
    boolean ok = false;
    for (int i = 0; i < n; i++)
    {
        for(int j = i + 2; j < n; j++)
        {
            if(arr[i] == arr[j])
                ok = true;
        }
    }
    if(ok)
        return "YES";
    else
        return "NO";
}
      
  
// Driver code
public static void main(String[] args)
{
  
    // Input values to list
    int Arr[] = {1, 2, 2, 3, 2};
      
    // Calculating length of array
    int N = Arr.length;
      
    System.out.print(SubPalindrome(N, Arr));
}
}
 
// This code contributed by sapnasingh4991

Python3

# Python 3 code to check if
# palindromic subsequence of
# length atleast 3 exist or not
def SubPalindrome (n, arr):
    ok = False
    for i in range(n):
        for j in range(i + 2, n):
            if arr[i] == arr[j]:
                ok = True
    return('YES' if ok else 'NO')
 
# Driver code
 
# Input values to list
Arr = [1, 2, 2, 3, 2]
 
# Calculating length of the array
N = len(arr)
 
print (SubPalindrome(N, Arr))

C#

// C# code to check if
// palindromic subsequence of
// length atleast 3 exist or not
using System;
 
public class GFG{
 
static string SubPalindrome(int n, int []arr)
{
    bool ok = false;
    for(int i = 0; i < n; i++)
    {
        for(int j = i + 2; j < n; j++)
        {
            if(arr[i] == arr[j])
                ok = true;
        }
    }
    if(ok)
        return "YES";
    else
        return "NO";
}
     
// Driver code
static public void Main ()
{
    // Input values to list
    int []Arr = { 1, 2, 2, 3, 2 };
     
    // Calculating length of array
    int N = Arr.Length;
    Console.WriteLine(SubPalindrome(N, Arr));
}
}
 
// This code is contributed by shivanisinghss2110

Javascript

<script>
 
    // Javascript code to check if 
    // palindromic subsequence of
    // length atleast 3 exist or not
     
      function SubPalindrome(n, arr)
    {
        let ok = false;
        for (let i = 0; i < n; i++)
        {
            for(let j = i + 2; j < n; j++)
            { 
                if(arr[i] == arr[j])
                    ok = true;
            }
        }
        if(ok)
            return "YES";
        else
            return "NO";
    }
     
    // Input values to list
    let Arr = [1, 2, 2, 3, 2];
       
    // Calculating length of array 
    let N = Arr.length;
       
    document.write(SubPalindrome(N, Arr));
 
</script>
Producción: 

YES

 

Complejidad del tiempo: O(N^2)
 

Publicación traducida automáticamente

Artículo escrito por ishagoel30 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *