You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

39 lines
914 B
Ruby

#Given an array which may contain duplicates,print all distinct elements.
#e.g. [1,1,2,3,3,4,5,6,6,6,6] should print 1 2 3 4 5 6.
#Approach 1: Using Sorting
#Time-complexity: O(nlogn){of sorting},Auxiliary-space : O(1)
def print_distinct(a)
n=a.length
a.sort! #You can use any o(nlogn) sorting algorithm you wish
i=0
while i<n
while (i<n-1 && a[i] == a[i+1])
i+=1
end
print "#{a[i]} "
i+=1
end
return
end
print_distinct([4, 7, 4, 1, 1, 4, 8, 10, 6, 7]) # => 1 4 6 7 8 10
#Approach 2: Using Hashing
#Time-complexity: O(n),Auxiliary-space:O(n) {for hash}
def print_distinct(a)
n=a.length
hash=Hash.new()
for i in 0...n
unless hash[a[i]]
hash[a[i]]=1
print "#{a[i]} "
end
end
return
end
print_distinct([4, 7, 4, 1, 1, 4, 8, 10, 6, 7]) # => 4 7 1 8 10 6