Find a number occurring odd number of times in integer array using java

  • Given an array of integer containing positive numbers.
  • All number in an array is occurring even number of times except one number.
  • We would like to find the number which occurs odd number of times.
  • Let us understand the problem statement with examples.
    • int example1[] = { 1, 1, 2, 2, 3, 4, 4 };
    • int example2[] = { 10, 10, 10, 11, 11, 11, 11};
    • int example3[] = { 2, 2, 4, 4, 5 };
  • In example1, numbers 1,2,4 occurs even number of times and 3 occurs odd times
  • In example2, numbers 10 occurs odd number of times and 11 occurs even number of times.

Algorithm: find number occurring odd number of times in an array (java)

  • We will use the properties of XOR gate.
  • Truth table of “Exclusive-OR” or XOR gate is :
X Y  Output
0 0  0
0 1 1
0  1
1 0
  • Let us apply XOR gate on example1 = { 1, 1, 2, 2, 3, 4, 4 }
  • OddNumber = 1 ^ 1 ^ 2 ^ 2 ^  3 ^ 4 ^ 4
  • OddNumber = (1 ^ 1) ^ (2 ^ 2) ^  3 ^ (4 ^ 4)
  • OddNumber = 0 ^ 0 ^  3 ^ 0
  • OddNumber = 3.

Program: find the number occurring odd number of times in an array

package org.learn.arrays;

import java.util.Arrays;

public class NumberOddTimes {
	public static void main(String[] args) {

		int example1[] = { 1, 1, 2, 2, 3, 4, 4 };
		String array = Arrays.toString(example1);
		int oddNumber = getOddNumber(example1);
		System.out.printf("1. Number occur odd times in %s is: %d", array, oddNumber);

		int example2[] = { 10, 10, 10, 11, 11, 11, 11};
		array = Arrays.toString(example2);
		oddNumber = getOddNumber(example2);
		System.out.printf("\n2. Number occur odd times in %s is: %d", array, oddNumber);

		int example3[] = { 2, 2, 4, 4, 5 };
		array = Arrays.toString(example3);
		oddNumber = getOddNumber(example3);
		System.out.printf("\n3. Number occur odd times in %s is: %d", array, oddNumber);
	}

	private static int getOddNumber(int[] elements) {
		int oddNumber = elements[0];
		int length = elements.length;
		for (int index = 1; index < length; index++) {
			oddNumber ^= elements[index];
		}
		return oddNumber;
	}
}

Output: number occurring odd number of times in integer array (java)

1. Number occur odd times in [1, 1, 2, 2, 3, 4, 4] is: 3
2. Number occur odd times in [10, 10, 10, 11, 11, 11, 11] is: 10
3. Number occur odd times in [2, 2, 4, 4, 5] is: 5
Scroll to Top