diff --git a/src/algorithms/sets/longest-increasing-subsequence/__test__/dpLongestIncreasingSubsequence.test.js b/src/algorithms/sets/longest-increasing-subsequence/__test__/dpLongestIncreasingSubsequence.test.js
index 13160b6192..a039a84928 100644
--- a/src/algorithms/sets/longest-increasing-subsequence/__test__/dpLongestIncreasingSubsequence.test.js
+++ b/src/algorithms/sets/longest-increasing-subsequence/__test__/dpLongestIncreasingSubsequence.test.js
@@ -1,36 +1,21 @@
 import dpLongestIncreasingSubsequence from '../dpLongestIncreasingSubsequence';
 
 describe('dpLongestIncreasingSubsequence', () => {
-  it('should find longest increasing subsequence length', () => {
-    // Should be:
-    // 9 or
-    // 8 or
-    // 7 or
-    // 6 or
-    // ...
+  it('should find longest increasing subsequence', () => {
     expect(dpLongestIncreasingSubsequence([
       9, 8, 7, 6, 5, 4, 3, 2, 1, 0,
-    ])).toBe(1);
+    ])).toStrictEqual([9]);
 
-    // Should be:
-    // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
     expect(dpLongestIncreasingSubsequence([
       0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
-    ])).toBe(10);
+    ])).toStrictEqual([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
 
-    // Should be:
-    // -1, 0, 2, 3
     expect(dpLongestIncreasingSubsequence([
       3, 4, -1, 0, 6, 2, 3,
-    ])).toBe(4);
+    ])).toStrictEqual([-1, 0, 2, 3]);
 
-    // Should be:
-    // 0, 2, 6, 9, 11, 15 or
-    // 0, 4, 6, 9, 11, 15 or
-    // 0, 2, 6, 9, 13, 15 or
-    // 0, 4, 6, 9, 13, 15
     expect(dpLongestIncreasingSubsequence([
       0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15,
-    ])).toBe(6);
+    ])).toStrictEqual([0, 2, 6, 9, 11, 15]);
   });
 });
diff --git a/src/algorithms/sets/longest-increasing-subsequence/dpLongestIncreasingSubsequence.js b/src/algorithms/sets/longest-increasing-subsequence/dpLongestIncreasingSubsequence.js
index e5f2ec6dbf..c7a60be841 100644
--- a/src/algorithms/sets/longest-increasing-subsequence/dpLongestIncreasingSubsequence.js
+++ b/src/algorithms/sets/longest-increasing-subsequence/dpLongestIncreasingSubsequence.js
@@ -3,7 +3,7 @@
  * Complexity: O(n * n)
  *
  * @param {number[]} sequence
- * @return {number}
+ * @return {number[]}
  */
 export default function dpLongestIncreasingSubsequence(sequence) {
   // Create array with longest increasing substrings length and
@@ -49,5 +49,18 @@ export default function dpLongestIncreasingSubsequence(sequence) {
     }
   }
 
-  return longestIncreasingLength;
+  // Construct the longest increasing subsequence from the back to the front
+  let rightIndex = lengthsArray.findIndex((item) => item === longestIncreasingLength);
+  const longestIncreasingSubsequence = [];
+
+  while (rightIndex > -1) {
+    const leftIndex = lengthsArray.findLastIndex((item, idx) => (
+      item === lengthsArray[rightIndex] - 1 && idx < rightIndex
+    ));
+
+    longestIncreasingSubsequence.unshift(sequence[rightIndex]);
+    rightIndex = leftIndex;
+  }
+
+  return longestIncreasingSubsequence;
 }