You have an array of numbers from 0 to N-1, one of the numbers is removed, and replaced with a number already in the array which makes a duplicate of that number. How can we detect this duplicate in time O(N).
For example an array of 6 integers - 0,1,2,3,4,5. one of the number i.e "3" removed and replaced with "2". now array would become 0,1,2,2,4,5
Solution :
// InterviewQuestion1.java
public class InterviewQuestion1 {
public static void main(String[] args) {
int[] testArray = { 0, 1, 2, 2, 4, 5 };
boolean[] testBool = new boolean[testArray.length];
for (int i = 0; i < testArray.length; i++) {
testBool[testArray[i]] = true;
}
System.out.print("Duplicate Number is : ");
for (int i = 0; i < testArray.length; i++) {
if (!testBool[i]) {
System.out.print(testArray[i]);
break;
}
}
}
}
// Output: Duplicate Number is : 2
really good!! and if there are multiple repeated values encountered each valued different in the array,, then if the " break statement " is removed from the "if statement" would work and detect those values ?
ReplyDeleteThanks Nischith.. Yes you are correct, but in my question array will contain only one repeated item, so I used "break".
Deletegud program
ReplyDelete