Odd occurences in Array

  • May 12, 2022

A non-empty array A consisting of N integers is given. The array contains an odd number of elements, and each element of the array can be paired with another element that has the same value, except for one element that is left unpaired.

For example, in array A such that:

A[0] = 9 A[1] = 3 A[2] = 9 A[3] = 3 A[4] = 9 A[5] = 7 A[6] = 9 the elements at indexes 0 and 2 have value 9, the elements at indexes 1 and 3 have value 3, the elements at indexes 4 and 6 have value 9, the element at index 5 has value 7 and is unpaired.

Let’s write an efficient algorithm for the following assumptions:

  • N is an odd integer within the range [1..1,000,000];
  • each element of array A is an integer within the range [1..1,000,000,000];
  • all but one of the values in A occur an even number of times.

{example1} {example2}

1
2
    Input: [2,2,1]
    Output: 1

1
2
    Input: [4,1,2,1,2]
    Output: 4

Solution:

{codeString1}

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
class OddOccurencesInAnArray {

        companion object {
            @JvmStatic
            fun main(args: Array<String>) {
                var intArray  = intArrayOf(9, 3, 9, 3, 9, 7, 9)
                println("solution \${solution(intArray)}")//7
                intArray  = intArrayOf(5, 3, 5, 3, 6, 23, 6, 23, 23)
                println("solution \${solution(intArray)}")//23
                intArray  = intArrayOf(9, 3, 9, 3, 9, 3, 9, 10, 10, 3, 10)
                println("solution \${solution(intArray)}")//10
                intArray  = intArrayOf(9, 3, 9, 3, 9, 7, 9, 3, 3)
                println("solution \${solution(intArray)}")//7
            }
    
            fun solution(A: IntArray): Int {
                println("input: \${A.contentToString()}")
                var mapArray = mutableMapOf<Int, Int>()
                for ((index, value) in A.withIndex()) {
                    val count = mapArray.get(value)
                    if (count == null) {
                        mapArray.put(value, 1)
                    }
                    else {
                        mapArray.put(value, count + 1)
                    }
                }
                var result = 0
                mapArray.forEach { key, value ->
                    if (value % 2 != 0) {
                        result = key
                    }
                }
                return result
            }
        }
    
    }

comments powered by Disqus

Related Posts

Rotate Array

An array A consisting of N integers is given. Rotation of the array means that each element is shifted right by one index, and the last element of the array is moved to the first place.

Read More

Binary Gap

A binary gap within a positive integer N is any maximal sequence of consecutive zeros that is surrounded by ones at both ends in the binary representation of N.

Read More

Minimal number of jumps

A small frog wants to get to the other side of the road.

Read More