Question: Given a list of ranges and you have to return a random number that is present within one of the ranges.
Constraint: Use constant space and linear time
Input: [[5, 10], [17, 19], [21, 32]]
Output: Any number between the ranges that is given(inclusive) e.g 6 or 5, 18, 31Solution:
import random
def getRandom(ranges):
ans = 0
total_nums = 0
for range in ranges:
total_nums += range[1] - range[0] + 1
random_num = random.randint(0, total_nums - 1)
for range in ranges:
current_range = range[1] - range[0] + 1
if(random_num < current_range):
ans = range[0] + random_num;
break
else:
random_num -= current_range
return ans