Advertisement
saurav_kalsoor

Maximum Bitwise AND - JAVA

Nov 23rd, 2021
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 0.90 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class Test {
  4.  
  5.     static Scanner sc = new Scanner(System.in);
  6.  
  7.     public static void main(String[] args) {
  8.  
  9.         int n = sc.nextInt();
  10.         int arr[] = new int[n];
  11.  
  12.         for (int i = 0; i < n; i++) {
  13.             arr[i] = sc.nextInt();
  14.         }
  15.  
  16.         System.out.println(maximumBitwiseAnd(n, arr));
  17.  
  18.     }
  19.  
  20.     public static int maximumBitwiseAnd(int n, int[] arr) {
  21.         int[] prefix = new int[n];
  22.         int[] suffix = new int[n];
  23.  
  24.         prefix[0] = (1<<30) - 1;
  25.         suffix[n-1] = prefix[0];
  26.  
  27.         for(int i=1; i < n; i++){
  28.             prefix[i] = prefix[i-1]&arr[i-1];
  29.         }
  30.  
  31.         for(int i=n-2; i >= 0; i--){
  32.             suffix[i] = suffix[i+1]&arr[i+1];
  33.         }
  34.  
  35.         int res = 0;
  36.         for(int i=0; i < n; i++){
  37.             res = Math.max(res, prefix[i]&suffix[i]);
  38.         }
  39.         return res;
  40.     }
  41. }
  42.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement