Solution to Distinct by codility | Code Says
Write a function
int solution(int A[], int N);
that, given a zero-indexed array A consisting of N integers, returns the number of distinct values in array A.
Assume that:
- N is an integer within the range [0..100,000];
- each element of array A is an integer within the range [−1,000,000..1,000,000].
For example, given array A consisting of six elements such that:
A[0] = 2 A[1] = 1 A[2] = 1 A[3] = 2 A[4] = 3 A[5] = 1
the function should return 3, because there are 3 distinct values appearing in array A, namely 1, 2 and 3.
Pre-sort - O(1) space, nlogn time:
def solution(A):
if len(A) == 0:
distinct = 0
else:
distinct = 1
A.sort()
for index in xrange(1, len(A)):
if A[index] == A[index-1]:
# The same element as the previous one
continue
else:
# A new element
distinct += 1
return distinct
Hashset:
3
4
5
|
Set set = new HashSet();
for (int i : A) {
set.add(i);
}
return set.size();
|
JDK 8 lambda stream:
Set<Integer> result=IntStream.of(A).boxed().collect(Collectors.toSet());
Read full article from Solution to Distinct by codility | Code Says