Find repeating element in a sorted array of size n

Given a sorted an array of n elements containing elements in range from 1 to n-1 i.e. one element occurs twice, the task is to find the repeating element in an array.

Examples : 

Input :  arr[] = { 1, 2 , 3 , 4 , 4}
Output :  4

Input :  arr[] = { 1 , 1 , 2 , 3 , 4}
Output :  1

Brute Force:

  1. Traverse the input an array using a for a loop.
  2. For each element in the array, traverse the remaining part of the an array using another for loop.
  3. For each subsequent element, check if it is equal to the current element.
  4. If a match is found, return the current element.
  5. If no match is found, continue with the next element in the outer loop.
  6. If the outer loop completes without finding a match, return -1 to indicate that there is no repeating element in the array.

Below is the implementation of the above approach:

Python3

# Python3 program to find the just repeating element in an
# an array of size n and elements from range 1 to n-1.

# Returns second appearance of a repeating element
# The function/method assumes that an array elements are in range from
# 1 to n-1.
def FindRepeatingElement(arr, size):
    for i in range(size):
        for j in range (i+1, size):
            if arr[i] == arr[j]:
                return arr[i]
    return -1

# Driver code
if __name__ == '__main__':
    arr = [1, 2, 3, 4, 4]
    n = len(arr)
    element = FindRepeatingElement(arr, n)
    if element != -1:
        print(element)
Output

4

An efficient method is to use Floyd’s Tortoise and Hare algorithm.

Python3

# Python program to find the just repeating element in an
# an array of size n and elements from range 1 to n-1

def findRepeatingElement(arr):
    tortoise = arr[0]
    hare = arr[0]
    
    # Phase 1: Finding intersection point of Tortoise and Hare
    while True:
        tortoise = arr[tortoise]
        hare = arr[arr[hare]]
        if tortoise == hare:
            break
    
    # Phase 2: Finding the entrance to the cycle
    tortoise = arr[0]
    while tortoise != hare:
        tortoise = arr[tortoise]
        hare = arr[hare]
    
    return hare

# Driver code
arr = [1, 2, 3, 3, 4, 5]
repeatingElement = findRepeatingElement(arr)
print(repeatingElement)
Output

3

Explore More

Explain about Hugging Face Transformers

Hugging Face Transformers is a powerful library designed for natural language processing (NLP), computer vision, and audio tasks. It provides state-of-the-art pretrained models and tools for fine-tuning and deploying these

What are Large Language Models

LLM stands for Large Language Model in the context of artificial intelligence. It refers to a type of AI model designed to understand, generate, and manipulate human language on a

AI Roadmap using Python

Python is a great foundation for diving into AI! To take the next step in your AI learning journey, here’s a roadmap to guide you. 1. Strengthen Your Math Skills