Shortest Range in K-sorted Lists | Algorithms



Shortest Range in K-sorted Lists | Algorithms

Objec­tive: You have k lists of sorted inte­gers. Find the small­est range that includes at least one num­ber from each of the k lists.

This is very nice and tricky solu­tion, This prob­lem was asked in the Google inter­view for soft­ware engi­neer position.

Exam­ple:

Shortest Range in K-sorted Lists - Example

Short­est Range in K-sorted Lists — Example

Small­est range will be 2, [1,3], it will con­tain 3 from list A[], 1 from list B[] and 2 from list C[].

Approach:

  • We will mod­ify the heap imple­men­ta­tion for this solu­tion. This approach will be quite sim­i­lar to "Merge k-sorted array" solu­tion we had discussed.
  • Cre­ate Min-Heap of type HeapN­ode.( HeapN­ode– Every Node will store the data and the list no from which it belongs).
  • Now take one ele­ment from each of the K list and cre­ate HeapN­ode object and insert into min-Heap.
  • While insert­ing keep track of max­i­mum value node inserted, call it as cur­rMax.
  • Extract the min­i­mum Node from the min-Heap call it as min, cal­cu­late the range = currMax-min.
  • The extracted node will also con­tain the list to which it belongs, insert the next ele­ment from that list into min-Heap.
  • Keep track of the min­i­mum range after every iter­a­tion of extract­ing min node and insert­ing new node into the heap.
  • If any point of time any list gets over, return the range, this will be the small­est range in K-list which con­tains at least one ele­ment from each list.

Read full article from Shortest Range in K-sorted Lists | Algorithms


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