Working on a puzzle.

Given an array a that contains only numbers in the range from 1 to a.length, find the first duplicate number for which the second occurrence has the minimal index. In other words, if there are more than 1 duplicated numbers, return the number for which the second occurrence has a smaller index than the second occurrence of the other number does. If there are no such elements, return -1.

Below are some sample array's which are being tested. So, in the code I have when this array { 2, 4, 3, 5, 1 } reaches 5 I get an out of bound error which makes sense. Any idea how to solve?

Given an array a that contains only numbers in the range from 1 to a.length, find the first duplicate number for which the second occurrence has the minimal index. In other words, if there are more than 1 duplicated numbers, return the number for which the second occurrence has a smaller index than the second occurrence of the other number does. If there are no such elements, return -1.

Below are some sample array's which are being tested. So, in the code I have when this array { 2, 4, 3, 5, 1 } reaches 5 I get an out of bound error which makes sense. Any idea how to solve?

```
private void Form1_Load(object sender, EventArgs e)
{
int[] a = new int[]{2, 3, 3, 1, 5, 2};
a = new int[] { 2, 4, 3, 5, 1 };
a = new int[] {1};
//Console.Write("The first repeating elements is: ");
Console.Write("Repeated Elements are :");
//for (int i = 0; i < a.Length; i++)
//{
// for (int j = i + 1; j < a.Length; j++)
// {
// if (a[i] == a[j])
// Console.Write(a[i] + " ");
// }
//}
for (int i = 0; i < a.Length; i++)
{
if (a[Math.Abs(a[i])] >= 0)
{
a[Math.Abs(a[i])] = -a[Math.Abs(a[i])];
//Console.WriteLine("IF: " + a[Math.Abs(a[i])]);
}
else
{
Console.Write(Math.Abs(a[i]) + " ");
break;
}
}
}
```

Experts Exchange Solution brought to you by

Enjoy your complimentary solution view.

Get every solution instantly with Premium.
Start your 7-day free trial.

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trialAny ideas how to resolve?

.NET Programming

From novice to tech pro — start learning today.

Experts Exchange Solution brought to you by

Enjoy your complimentary solution view.

Get every solution instantly with Premium.
Start your 7-day free trial.

Open in new window

But this array have length 1, you only can get elementOpen in new window

But you try to get elementOpen in new window

in row:Open in new window

When you use

Open in new window

you may be can get value, which great then length of your array.If your array have length 5, you can not get element a[5], only a[4], because numbering begins with 0 index.

May be you want something like this?

Open in new window