Pair of array elements that add up to a given sum - Algorithms and Problem SolvingAlgorithms and Problem Solving



Pair of array elements that add up to a given sum - Algorithms and Problem SolvingAlgorithms and Problem Solving

Given an array of integers and a value. Find all the pairs that sums up to the value in O(n) time with only one pass over the array. Can you do it efficiently without any space constraint?

For example, Given A=[3, 0, -2, 1, 3, 6, 8] and sum = 6 then output pairs are: {(3, 3), (0, 6), (-2, 8)}.
O(n) time with O(n) space solution
Use a hashmap to store the value at each position of A[]. While populating the hashmap for each position i, check whether the (sum-A[i]) is contained in the hashmap. If it was contained then we found a pair. Otherwise continue searching.

O(nlgn) time with O(1) space solution
Sort the array in O(nlgn) time. Now, keep two pointers, one at the beginning and the other at the end of the sorted array. If diff=A[j]-A[i] is equal to sum then (i,j) is a pair. Otherwise if sum>diff then search for a lower element on right (i.e. decrement j). Else, search for a higher element on the left (i.e. increment i).


Read full article from Pair of array elements that add up to a given sum - Algorithms and Problem SolvingAlgorithms and Problem Solving


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts