complexity theory - Get an O(N) algorithm to find a product of a collection of numbers with a strange constraint -


this question when participated recent interview, think interesting. let's int n=10;

input : array int a[10];

output: array float b[10];

requirement:

b[0]= a[1]*a[2]*...a[9];  //  product of numbers in a, other a[0];  b[1]= a[0]*a[2]*...a[9];  //  product of numbers in a, other a[1]; .... b[9]= a[0]*a[1]*...a[8];  //  product of numbers in a, other a[9]; .... 

problem: how can array b populated without using division operator /? , o(n) algorithm?

i tried quite few methods, still in vain. ideas?

firstly, calculate left , right products:

left[i] = a[0]*a[1]*...*a[i] right[i] = a[i]*a[i+1]*...*a[n-1] 

note left[i] == left[i-1] * a[i], left array can computed in linear time. simlarly, right array can computed in linear time.

from left , right, array b can computed in linear time b[i] = left[i-1] * right[i+1] special cases i == 0 , i == n.


Comments

Popular posts from this blog

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

c++ - qgraphicsview horizontal scrolling always has a vertical delta -