find duplicate in an array of N+1 Integers in java
Duplicate in an array of N+1 integers in Java
Here, in this page we will discuss the program to find the duplicate in an array of N+1 integers in Java programming . We are Given an array of integers Arr containing N+1 integers where each integer is in the range [1, N] inclusive.
Given an array of n elements containing elements ranging from 0 to n-1, any of these numbers can appear any number of times. Find these repeating numbers in O(n) while only using constant memory space.
Algorithm :
- We’ll start with two variables, I and j, and work our way up.
- We will loop until I reach the last element or find a repeated element.
- We will pre-increment the j value in order to compare elem to the next elem.
- If we don’t find elem, we’ll raise I because j will be pointing to the last elem, and then reposition j with i.
Code in Java
Run
import java.io.*; import java.util.*; public class Main { static int findduplicate(int[] arr, int n) { // return -1 because in these cases // there can not be any repeated element if (n <= 1) return -1; // initialize fast and slow int slow = arr[0]; int fast = arr[arr[0]]; // loop to enter in the cycle while (fast != slow) { // move one step for slow slow = arr[slow]; // move two step for fast fast = arr[arr[fast]]; } // loop to find entry point of the cycle fast = 0; while (slow != fast) { slow = arr[slow]; fast = arr[fast]; } return slow; } // Driver Code public static void main(String args[]) { int[] arr = {1, 2, 3, 4, 5, 6, 3}; int n = arr.length; System.out.print(findduplicate(arr, n)); } }
Output
3
Note
Time Complexity : O(n)
Auxiliary Space : O(1)
Method 2
Run
import java.util.*; public class Main { public static void main(String args[]) { int numRay[] = { 0, 4, 3, 2, 7, 8, 2, 3, 1 }; for (int i = 0; i < numRay.length; i++) { numRay[numRay[i] % numRay.length] = numRay[numRay[i] % numRay.length] + numRay.length; } System.out.println("The repeating elements are : "); for (int i = 0; i < numRay.length; i++) { if (numRay[i] >= numRay.length * 2) { System.out.println(i + " "); } } } }
Output
The repeating elements are :
2
3
Prime Course Trailer
Related Banners
Get PrepInsta Prime & get Access to all 200+ courses offered by PrepInsta in One Subscription
import java.util.*;
public class Main
{
public static void main(String[] args) {
Scanner scn=new Scanner(System.in);
int n=scn.nextInt();
int[] arr=new int[n];
for(int i=0;i<n;i++){
arr[i]=scn.nextInt();
}
for(int i=0;i<arr.length;i++){
int indx=Math.abs(arr[i])-1;
int val=arr[indx];
if(val<0){
System.out.println(indx+1);
return ;
}
else{
arr[indx]*=-1;
}
}
System.out.println(-1);
}
}