Problem:
WAP a program to find a contineous subset whose sum is divisible by 7. We are given a array of number (negative+positive).
calculate the complexity of your algorithm
Solution:
So, we want to find sub-set [i, j], such that
a[i]+a[i+1]+ ... a[j] ) % k = 0
with k == 7, that really does not matter
________________________________________________
Let's calculate the sum of elements from 1 to i by mod k for each i:
s[i] = (a[1] + a[2] + ... + a[i]) % k
And we can note that, if there is such [i, j] that we are looking for, then:
s[j]-s[i] == (a[1]+...+a[j]) - (a[1]+...+a[i]) == (a[i]+...+a[j]) == 0
So, for each s[i] == s[j], sum of sub-set [i, j] is divisible by k.
Complexity:
time - O(n)Links and credits:
space - O(n)
http://www.careercup.com/question?id=5812734516002816
Read full article from Noteworthy Algorithms: Find a subarray divisible by 7
No comments:
Post a Comment