📜  所有元素相同的最长子数组

📅  最后修改于: 2021-05-14 08:37:55             🧑  作者: Mango

给定大小为N的数组arr [] ,任务是找到由所有相等元素组成的最大子数组。
例子:

方法:想法是遍历数组并检查当前元素是否等于前一个元素。如果是,则将最长子数组的长度加1。否则,当前最长子数组等于1。此外,在迭代的每个步骤中,用相等的元素更新最长子数组。
下面是上述方法的实现:

C++
// C++ program to find largest
// subarray with all equal elements.
 
#include 
using namespace std;
 
// Function to find largest sub
// array with all equal elements.
int subarray(int arr[], int n)
{
 
    int ans = 1, temp = 1;
 
    // Traverse the array
    for (int i = 1; i < n; i++) {
 
        // If elemet is same as
        // previous increment temp value
        if (arr[i] == arr[i - 1]) {
            ++temp;
        }
        else {
            ans = max(ans, temp);
            temp = 1;
        }
    }
    ans = max(ans, temp);
 
    // Return the required answer
    return ans;
}
 
// Driver code
int main()
{
    int arr[] = { 2, 2, 1, 1,
                  2, 2, 2, 3, 3 };
    int n = sizeof(arr) / sizeof(arr[0]);
 
    // Function call
    cout << subarray(arr, n);
 
    return 0;
}


Java
// Java program to find largest
// subarray with all equal elements.
import java.util.*;
 
class GFG{
 
// Function to find largest sub
// array with all equal elements.
static int subarray(int arr[], int n)
{
    int ans = 1, temp = 1;
 
    // Traverse the array
    for(int i = 1; i < n; i++)
    {
         
       // If elemet is same as
       // previous increment temp value
       if (arr[i] == arr[i - 1])
       {
           ++temp;
       }
       else
       {
           ans = Math.max(ans, temp);
           temp = 1;
       }
    }
    ans = Math.max(ans, temp);
 
    // Return the required answer
    return ans;
}
 
// Driver code
public static void main(String[] args)
{
    int arr[] = { 2, 2, 1, 1, 2,
                  2, 2, 3, 3 };
    int n = arr.length;
 
    // Function call
    System.out.print(subarray(arr, n));
}
}
 
// This code is contributed by AbhiThakur


Python3
# Python3 program to find largest
# subarray with all equal elements.
 
# Function to find largest sub
# array with all equal elements.
def subarray(arr, n):
     
    ans, temp = 1, 1
 
    # Traverse the array
    for i in range(1, n):
 
        # If element is same as previous
        # increment temp value
        if arr[i] == arr[i - 1]:
            temp = temp + 1
        else:
            ans = max(ans, temp)
            temp = 1
                 
    ans = max(ans, temp)
 
    # Return the required answer
    return ans
 
# Driver code
arr = [ 2, 2, 1, 1, 2,
        2, 2, 3, 3 ]
n = len(arr)
 
# Function call
print(subarray(arr, n))
 
# This code is contributed by jrishabh99


C#
// C# program to find largest
// subarray with all equal elements.
using System;
class GFG{
 
// Function to find largest sub
// array with all equal elements.
static int subarray(int[] arr, int n)
{
    int ans = 1, temp = 1;
 
    // Traverse the array
    for(int i = 1; i < n; i++)
    {
         
       // If elemet is same as
       // previous increment temp value
       if (arr[i] == arr[i - 1])
       {
           ++temp;
       }
       else
       {
           ans = Math.Max(ans, temp);
           temp = 1;
       }
    }
    ans = Math.Max(ans, temp);
     
    // Return the required answer
    return ans;
}
 
// Driver code
public static void Main()
{
    int[] arr = { 2, 2, 1, 1, 2,
                  2, 2, 3, 3 };
    int n = arr.Length;
 
    // Function call
    Console.Write(subarray(arr, n));
}
}
 
// This code is contributed by Nidhi_biet


Javascript


输出:
3

时间复杂度:O(N)