|
-
March 20th, 2003, 09:55 AM
#1
Finding duplicates in an array
Hi I am trying to solve this puzzle:
Suppose you have an array of 1001 integers. The integers are in random order, but you know each of the integers is between 1 and 1000 (inclusive). In addition, each number appears only once in the array, except for one number, which occurs twice. Assume that you can access each element of the array only once. Describe an algorithm to find the repeated number. If you used auxiliary storage in your algorithm, can you find an algorithm that does not require it?
Its easy to solve it using secondary array of 100 integers however I am looking for a way to do it without using aux array.
Any ideas?
Thanks.
RS
-
March 20th, 2003, 10:05 AM
#2
I'm not saying that it's not possible, but I cannot think of any way
to access the elements only once and not use auxiliary storage
while still retaining the amount of times each number has been
accessed. Of course, I'm not trying to imply that it is possible
either I just can't see any way that it can be done and I hope
to also be enlightened.
--Paul
-
March 20th, 2003, 10:23 AM
#3
just add up the numbers ...
and subtract 500500 (which is 1000*1001/2)
The difference is the duplicate element.
The sum of 1 + 2 + ... + n = n*(n+1)/2
-
March 20th, 2003, 10:31 AM
#4
Dang! Each number appears only once in the array! How could
I miss that?
-
March 21st, 2003, 01:19 PM
#5
Thanks
Hi Philip,
Thanks again for the solution.
RS
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|