Open In App

Maximum OR value of a pair in an Array | Set 2

Given an array arr[] of N positive elements, the task is to find the maximum bitwise OR value of a pair from the given array.
Examples:

Input: arr[] = {3, 6, 8, 16} 
Output: 24 
Explanation: 
The pair giving maximum OR value is (8, 16) 
8|16 = 24
Input: arr[] = {8, 7, 3, 12} 
Output: 15 
Explanation: 
There are more than one pair giving us the maximum OR value. 
8|7 = 15 
 



Naive Approach: Refer to Maximum OR value of a pair in an array for the naive approach. 
Efficient Approach: In this article, we will discuss an optimized solution for the given problem.
Follow the steps below to solve the problem:

Below is the implementation of the above approach:






// C++ implementation of
// the approach above
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to return the maximum
// bitwise OR for any pair of the
// given array in O(n) time complexity.
int maxOR(int arr[], int n)
{
    // Find the maximum
    // element in the array
    int max_value
        = *max_element(arr,
                       arr + n);
 
    // Stores the maximum
    // OR value
    int ans = 0;
 
    // Traverse the array and
    // perform Bitwise OR
    // between every array element
    // with the maximum element
    for (int i = 0; i < n; i++) {
        ans = max(ans, (max_value
                        | arr[i]));
    }
    return ans;
}
 
// Driver Code
int main()
{
    int arr[] = { 3, 6, 8, 16 };
    int n = sizeof(arr)
            / sizeof(arr[0]);
 
    cout << maxOR(arr, n);
 
    return 0;
}




// Java implementation of
// the approach above
import java.util.Arrays;
class GFG{
     
// Function to return the maximum
// bitwise OR for any pair of the
// given array in O(n) time complexity.
static int maxOR(int []arr, int n)
{
    // Find the maximum
    // element in the array
    int max_value = Arrays.stream(arr).max().getAsInt();
 
    // Stores the maximum
    // OR value
    int ans = 0;
 
    // Traverse the array and
    // perform Bitwise OR
    // between every array element
    // with the maximum element
    for (int i = 0; i < n; i++)
    {
        ans = Math.max(ans, (max_value | arr[i]));
    }
    return ans;
}
 
// Driver Code
public static void main(String[] args)
{
    int arr[] = new int[]{ 3, 6, 8, 16 };
    int n = 4;
 
    System.out.print(maxOR(arr, n));
}
}
 
// This code is contributed by Ritik Bansal




# Python3 implementation of
# the approach above
 
# Function to return the maximum
# bitwise OR for any pair of the
# given array in O(n) time complexity.
def maxOR(arr, n):
 
    # Find the maximum
    # element in
    max_value = max(arr)
     
    # Stores the maximum
    # OR value the array
    ans = 0
 
    # Traverse the array and
    # perform Bitwise OR
    # between every array element
    # with the maximum element
    for i in range(n):
        ans = max(ans, (max_value | arr[i]))
     
    return ans
 
# Driver Code
if __name__ == "__main__":
     
    arr = [ 3, 6, 8, 16 ]
    n = len(arr)
 
    print(maxOR(arr, n))
 
# This code is contributed by jana_sayantan




// C# implementation of
// the approach above
using System;
using System.Linq;
 
class GFG{
     
// Function to return the maximum
// bitwise OR for any pair of the
// given array in O(n) time complexity.
static int maxOR(int []arr, int n)
{
     
    // Find the maximum
    // element in the array
    int max_value = arr.Max();
 
    // Stores the maximum
    // OR value
    int ans = 0;
 
    // Traverse the array and
    // perform Bitwise OR
    // between every array element
    // with the maximum element
    for(int i = 0; i < n; i++)
    {
        ans = Math.Max(ans, (max_value |
                             arr[i]));
    }
    return ans;
}
 
// Driver Code
public static void Main(String[] args)
{
    int []arr = { 3, 6, 8, 16 };
    int n = 4;
 
    Console.Write(maxOR(arr, n));
}
}
 
// This code is contributed by 29AjayKumar




<script>
// Javascript implementation of
// the above approach
 
// Function to return the maximum
// bitwise OR for any pair of the
// given array in O(n) time complexity.
function maxOR(arr, n)
{
 
    // Find the maximum
    // element in the array
    let max_value = Math.max(...arr);
   
    // Stores the maximum
    // OR value
    let ans = 0;
   
    // Traverse the array and
    // perform Bitwise OR
    // between every array element
    // with the maximum element
    for (let i = 0; i < n; i++)
    {
        ans = Math.max(ans, (max_value | arr[i]));
    }
    return ans;
}
 
    // Driver Code
    let arr = [ 3, 6, 8, 16 ];
    let n = 4;
       document.write(maxOR(arr, n));
 
// This code is contributed by souravghosh0416.
</script>

Output: 
24

Time Complexity: O(N) 
Auxiliary Space: O(1)
 


Article Tags :