From 7c84903a324604588a0480ee350a043d9308c628 Mon Sep 17 00:00:00 2001 From: mohaned mashaly <30902228+12mohaned@users.noreply.github.com> Date: Sun, 5 Apr 2020 22:59:25 +0200 Subject: [PATCH 1/4] return the index of Two Numbers equals to sum --- algorithms/math/two-sums | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 algorithms/math/two-sums diff --git a/algorithms/math/two-sums b/algorithms/math/two-sums new file mode 100644 index 00000000..f10f569b --- /dev/null +++ b/algorithms/math/two-sums @@ -0,0 +1,20 @@ +""" +Complexity = O(N*M) +Given an Array of Integers +return the index of the two numbers which their sum is equals +to the target + +""" +def twoSum(nums, target): + i = 0 + flag = False + for i in range(len(nums)): + if(flag): + break + for j in range(len(nums)): + if( i !=j ): + if(nums[i] + nums[j] == target): + print(str(i) + " " + str(j)) + flag = True + + From e7ecf31f01d3b5ebf617d14b258db6e7783d2f7a Mon Sep 17 00:00:00 2001 From: mohaned-mashaly Date: Fri, 23 Apr 2021 17:26:36 +0200 Subject: [PATCH 2/4] add prefix sum algorithm --- data_structures/array/prefix_sum.py | 31 +++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 data_structures/array/prefix_sum.py diff --git a/data_structures/array/prefix_sum.py b/data_structures/array/prefix_sum.py new file mode 100644 index 00000000..63314166 --- /dev/null +++ b/data_structures/array/prefix_sum.py @@ -0,0 +1,31 @@ +#prefix sum algorithm + +#Return array of sums from the queries list. +#For example, if the numbers is [1,2,3,4,5] and queries is [[0,1],[2,3],[4,5]]. +#the first element in the queries list(queries[0]) should return summation of elements from index 0 to 1 in array numbers. +#time complexity O(n) + +def prefix_sum(numbers, queries): + prefix = [] + output = [] + prefix.append(numbers[0]) + numbers_index = 1 + while(numbers_index < len(numbers)): + prefix.append(prefix[numbers_index-1] + numbers[numbers_index]) + numbers_index+=1 + + queries_index = 0 + while(queries_index < len(queries)): + if(queries[queries_index][0] == 0): + output.append(prefix[queries[queries_index][1]]) + else: + output.append(prefix[queries[queries_index][1]] - prefix[queries[queries_index][0]-1]) + + queries_index+=1 + return output + +#test cases +print(prefix_sum([3, 0, -2, 6, -3, 2],[[0,2], [2,5], [0,5]])) +print(prefix_sum([-1000], [[0,0]])) +print(prefix_sum([34, 19, 21, 5, 1, 10, 26, 46, 33, 10], [[3,7], [3,4], [3,7], [4,5],[0,5]])) +print(prefix_sum([-4, -18, -22, -14, -33, -47, -29, -35, -50, -19],[[2,9], [5,6],[1,2],[2,2],[4,5]])) \ No newline at end of file From 35cdf0be4842149986188b892eb6839641c698c8 Mon Sep 17 00:00:00 2001 From: mohaned-mashaly Date: Sat, 24 Apr 2021 23:45:28 +0200 Subject: [PATCH 3/4] edit pep-8 --- data_structures/array/prefix_sum.py | 39 ++++++++++++++++------------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/data_structures/array/prefix_sum.py b/data_structures/array/prefix_sum.py index 63314166..7daaa502 100644 --- a/data_structures/array/prefix_sum.py +++ b/data_structures/array/prefix_sum.py @@ -1,31 +1,34 @@ -#prefix sum algorithm - -#Return array of sums from the queries list. -#For example, if the numbers is [1,2,3,4,5] and queries is [[0,1],[2,3],[4,5]]. -#the first element in the queries list(queries[0]) should return summation of elements from index 0 to 1 in array numbers. -#time complexity O(n) +""" +Prefix sum algorithm +Complexity = O(N) +Return array of sums from the queries list. +For example, if the numbers is [1,2,3,4,5] and queries is [[0,1],[2,3],[4,5]]. +The first element in the queries list(queries[0]) should return summation of elements +from index 0 to 1 in array numbers. +""" def prefix_sum(numbers, queries): prefix = [] output = [] prefix.append(numbers[0]) numbers_index = 1 - while(numbers_index < len(numbers)): + while numbers_index < len(numbers): prefix.append(prefix[numbers_index-1] + numbers[numbers_index]) - numbers_index+=1 - + numbers_index += 1 queries_index = 0 - while(queries_index < len(queries)): - if(queries[queries_index][0] == 0): + while queries_index < len(queries): + if queries[queries_index][0] == 0: output.append(prefix[queries[queries_index][1]]) else: output.append(prefix[queries[queries_index][1]] - prefix[queries[queries_index][0]-1]) - - queries_index+=1 + queries_index += 1 return output -#test cases -print(prefix_sum([3, 0, -2, 6, -3, 2],[[0,2], [2,5], [0,5]])) -print(prefix_sum([-1000], [[0,0]])) -print(prefix_sum([34, 19, 21, 5, 1, 10, 26, 46, 33, 10], [[3,7], [3,4], [3,7], [4,5],[0,5]])) -print(prefix_sum([-4, -18, -22, -14, -33, -47, -29, -35, -50, -19],[[2,9], [5,6],[1,2],[2,2],[4,5]])) \ No newline at end of file +""" +test cases +""" +print(prefix_sum([3, 0, -2, 6, -3, 2], [[0, 2], [2, 5], [0, 5]])) +print(prefix_sum([-1000], [[0, 0]])) +print(prefix_sum([34, 19, 21, 5, 1, 10, 26, 46, 33, 10], [[3, 7], [3, 4], [3, 7], [4, 5], [0, 5]])) +print(prefix_sum([-4, -18, -22, -14, -33, -47, -29, -35, -50, -19], + [[2, 9], [5, 6], [1, 2], [2, 2], [4, 5]])) \ No newline at end of file From 15825ff1f174e6ac8ff808adec1cc98046efd13f Mon Sep 17 00:00:00 2001 From: mohaned mashaly <30902228+12mohaned@users.noreply.github.com> Date: Thu, 8 Jul 2021 11:30:24 +0200 Subject: [PATCH 4/4] Delete two-sums --- algorithms/math/two-sums | 20 -------------------- 1 file changed, 20 deletions(-) delete mode 100644 algorithms/math/two-sums diff --git a/algorithms/math/two-sums b/algorithms/math/two-sums deleted file mode 100644 index f10f569b..00000000 --- a/algorithms/math/two-sums +++ /dev/null @@ -1,20 +0,0 @@ -""" -Complexity = O(N*M) -Given an Array of Integers -return the index of the two numbers which their sum is equals -to the target - -""" -def twoSum(nums, target): - i = 0 - flag = False - for i in range(len(nums)): - if(flag): - break - for j in range(len(nums)): - if( i !=j ): - if(nums[i] + nums[j] == target): - print(str(i) + " " + str(j)) - flag = True - -