Find maximum length of subsequence in Array? | LeetCode Discuss



Find maximum length of subsequence in Array? | LeetCode Discuss

This is longest Increasing subsequence problem. There is DP solution for this with time complexity O(n^2). LIS[i] = Math.max(LIS[j]) where j<i and num[j] < num[i] or Lis[i] = 1 if it doesn't exist such j
There is O(nlog(n)) solution using binary search. The idea is to iterate through the array from left to right and at each iteration to improve or extend current best LIS. What do I mean. Suppose we have array a = {10, 16, 12, 14}
In the beginning our best LIS is empty , we keep it in array best

  1. best = []
  2. we read a[0] = 10 and put it in best , best = {10}
  3. read a[1] = 16 and put it in best ={10,16} because this extends our best LIS
  4. read a[2] = 12, it cannot extend our best LIS , because 12 is less than 16, but we can swap 16 with 12 in best in order to improve our LIS, There is a possibility next numbers to be greater than 12 and less than 16 and to extend best LIS.
    b becomes {10,12}
  5. We read a[3] = 14 and b becomes {10,12,14}, because 14 is greater than 12 and it iextends current best solution

Read full article from Find maximum length of subsequence in Array? | LeetCode Discuss


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