Skip to content
Programmingoneonone
Programmingoneonone
  • Home
  • CS Subjects
    • IoT ? Internet of Things
    • Digital Communication
    • Human Values
  • Programming Tutorials
    • C Programming
    • Data structures and Algorithms
    • 100+ Java Programs
    • 100+ C Programs
  • HackerRank Solutions
    • HackerRank Algorithms Solutions
    • HackerRank C problems solutions
    • HackerRank C++ problems solutions
    • HackerRank Java problems solutions
    • HackerRank Python problems solutions
Programmingoneonone

HackerRank AND xor OR problem solution

YASH PAL, 31 July 2024

In this HackerRank AND xor OR problem solution, we have given an array of distinct elements. and we need to find the smallest and next to smallest element in the bitwise operation of both elements are maximum.

HackerRank AND xor OR problem solution

Problem solution in Python programming.

class Stack:
    def __init__(self):
        self.items = []
        self.size = 0
    def push(self, elem):
        self.items.append(elem)
        self.size += 1
    def pop(self):
        self.size -= 1
        return self.items.pop()
    def peek(self):
        return self.items[-1]
    def isEmpty(self):
        return self.size == 0
N = int(input())
A = [int(x) for x in input().split(" ")]
mx = A[0]^A[1]
stack = Stack()
for i in A:
    popped = True
    while not stack.isEmpty():
        top = stack.peek() 
        Si = i^top  
        if Si > mx:  # yield
            mx = Si
        if i < top:
            stack.pop()
        else:
            break
    stack.push(i)
print(mx)

Problem solution in Java Programming.

import java.io.*;
import java.util.*;

public class Solution {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int[] arr = new int[N];
        for(int i = 0; i < N; i++){
            arr[i] = sc.nextInt();
        }
        int max = 0;
        Stack<Integer> stack = new Stack();
        for(int i = 0; i < N; i++){
            while(!stack.isEmpty()){
                int temp = stack.peek() ^ arr[i];
                max = Math.max(temp,max);
                if(arr[i]<stack.peek()) {
                    stack.pop();
                }else{
                    break;
                }
            }
            stack.push(arr[i]);
        }
        System.out.println(max);
       
    }
}

Problem solution in C++ programming.

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <climits>
#include <stack>

using namespace std;

#define MAXN 1000000

int a[MAXN+1];

void solve(int n) {
    stack<int> s;
    
    int result = INT_MIN, cur;
    for (int i = 0; i < n; ++ i) {
       while (!s.empty() && s.top() >= a[i]) {
          cur = INT_MAX;  
          int tmp = s.top(); s.pop();
          if (tmp < cur) {
              cur = tmp;
              result = max(result, cur ^ a[i]);
          }   
       }
       if (!s.empty()) result = max(result, a[i] ^ s.top());
       s.push(a[i]);
    }
 
    printf("%dn", result);
}

int main() {
    int N;
    scanf("%d", &N);
    for (int i = 0; i < N; ++ i) scanf("%ld", &a[i]);

    solve(N);
    /* Enter your code here. Read input from STDIN. Print output to STDOUT */   
    return 0;
}

Problem solution in C programming.

#include <stdio.h>

int arr[1000010];
int stack[1000010];

#define max(a, b) ((a) > (b) ? (a) : (b))

int main() {
    int n, i, top = 0, r = 0;
    scanf("%d", &n);
    for (i = 0; i < n; ++i) {
        scanf("%d", arr+i);
    }
    for (i = 0; i < n; ++i) {
        while (top) {
            r = max(r, arr[i] ^ stack[top-1]);
            if (arr[i] < stack[top-1]) {
                --top;
            }
            else {
                break;
            }
        }
        stack[top++] = arr[i];
    }

    printf("%d", r);

    return 0;
}

Problem solution in JavaScript programming.

'use strict';

const fs = require('fs');

process.stdin.resume();
process.stdin.setEncoding('utf-8');

let inputString = '';
let currentLine = 0;

process.stdin.on('data', inputStdin => {
    inputString += inputStdin;
});

process.stdin.on('end', _ => {
    inputString = inputString.trim().split('n').map(str => str.trim());

    main();
});

function readLine() {
    return inputString[currentLine++];
}

/*
 * Complete the andXorOr function below.
 */
function andXorOr(a) {
    /*
     * Write your code here.
     */
    const stack = [];
    let result = 0;
    for (let i = 0; i < a.length; i++){
        while (stack.length > 0) {
            const top = stack[stack.length - 1];
            const current = a[i] ^ top;
            result = Math.max(result, current);

            if (top > a[i]) {
                stack.pop();
            } else {
                break;
            }   
        }
        stack.push(a[i]);
    }
    return result;
}

function main() {
    const ws = fs.createWriteStream(process.env.OUTPUT_PATH);

    const aCount = parseInt(readLine(), 10);

    const a = readLine().split(' ').map(aTemp => parseInt(aTemp, 10));

    let result = andXorOr(a);

    ws.write(result + "n");

    ws.end();
}

coding problems solutions

Post navigation

Previous post
Next post

Pages

  • About US
  • Contact US
  • Privacy Policy

Programing Practice

  • C Programs
  • java Programs

HackerRank Solutions

  • C
  • C++
  • Java
  • Python
  • Algorithm

Other

  • Leetcode Solutions
  • Interview Preparation

Programming Tutorials

  • DSA
  • C

CS Subjects

  • Digital Communication
  • Human Values
  • Internet Of Things
  • YouTube
  • LinkedIn
  • Facebook
  • Pinterest
  • Instagram
©2025 Programmingoneonone | WordPress Theme by SuperbThemes