diff --git a/Remove Duplicates from Sorted Array/images/final stage.png b/Remove Duplicates from Sorted Array/images/final stage.png
new file mode 100644
index 0000000..12b2a48
Binary files /dev/null and b/Remove Duplicates from Sorted Array/images/final stage.png differ
diff --git a/Remove Duplicates from Sorted Array/images/initial pointer positions.png b/Remove Duplicates from Sorted Array/images/initial pointer positions.png
new file mode 100644
index 0000000..736c7b0
Binary files /dev/null and b/Remove Duplicates from Sorted Array/images/initial pointer positions.png differ
diff --git a/Remove Duplicates from Sorted Array/images/processing_a_number colony.png b/Remove Duplicates from Sorted Array/images/processing_a_number colony.png
new file mode 100644
index 0000000..6f84160
Binary files /dev/null and b/Remove Duplicates from Sorted Array/images/processing_a_number colony.png differ
diff --git a/Remove Duplicates from Sorted Array/images/sections.png b/Remove Duplicates from Sorted Array/images/sections.png
new file mode 100644
index 0000000..c1512ea
Binary files /dev/null and b/Remove Duplicates from Sorted Array/images/sections.png differ
diff --git a/Remove Duplicates from Sorted Array/res/.$Remove duplicated from sorted aaray.drawio.bkp b/Remove Duplicates from Sorted Array/res/.$Remove duplicated from sorted aaray.drawio.bkp
new file mode 100644
index 0000000..49ed571
--- /dev/null
+++ b/Remove Duplicates from Sorted Array/res/.$Remove duplicated from sorted aaray.drawio.bkp
@@ -0,0 +1,458 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Remove Duplicates from Sorted Array/res/Remove duplicated from sorted aaray.drawio b/Remove Duplicates from Sorted Array/res/Remove duplicated from sorted aaray.drawio
new file mode 100644
index 0000000..4255827
--- /dev/null
+++ b/Remove Duplicates from Sorted Array/res/Remove duplicated from sorted aaray.drawio
@@ -0,0 +1,347 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Remove Duplicates from Sorted Array/solution.java b/Remove Duplicates from Sorted Array/solution.java
new file mode 100644
index 0000000..acac66c
--- /dev/null
+++ b/Remove Duplicates from Sorted Array/solution.java
@@ -0,0 +1,37 @@
+class Solution {
+
+ public void swap(int[] arr, int ind1, int ind2) {
+
+ int temp = arr[ind1];
+ arr[ind1] = arr[ind2];
+ arr[ind2] = temp;
+
+ }
+
+ public int removeDuplicates(int[] nums) {
+
+ int unique = 0;
+ int seek = 0;
+
+ while (seek <= nums.length - 1) {
+ // Initialize a limit pointer
+ int limit = seek;
+ // If limit is already on last element of array, look-ahead should be avoided
+ // Till numbers repeat increment limit, else break
+ while (limit < nums.length - 1 && nums[seek] == nums[limit + 1]) {
+ limit = limit + 1;
+ }
+ // Swap the seek pointer value and the unique pointer value, then increment
+ // unique pointer
+ swap(nums, seek, unique);
+ unique = unique + 1;
+ // Move the seek pointer, only if end of array hasn't been reached
+ if (limit == nums.length - 1) {
+ break;
+ } else {
+ seek = limit + 1;
+ }
+ }
+ return unique;
+ }
+}
\ No newline at end of file
diff --git a/Remove Duplicates from Sorted Array/solution.md b/Remove Duplicates from Sorted Array/solution.md
new file mode 100644
index 0000000..c28698c
--- /dev/null
+++ b/Remove Duplicates from Sorted Array/solution.md
@@ -0,0 +1,37 @@
+# Leetcode 150 Interview
+## [Remove Duplicates from Sorted Array](https://leetcode.com/problems/remove-duplicates-from-sorted-array/description/?envType=study-plan-v2&envId=top-interview-150)
+
+## Deductions
+- The input array is sorted in an ascending order.
+- The duplicate elements need to be pushed to the back of the array, preferably by swapping, because the solution has to be in place.
+- The ordering of the repeated elements does not matter.
+- Numbers can be said to be existing in adjacent colonies, colonies of 0s, followed by colonies of 1s and so on, each colony comprises of either a single number or more.
+
+## High Level Approach
+
+- In the end we would want a divider, to the left of which we have only unique elements in an ascending order, to the right would be all the elemts in any-order.
+
+- The divider would move only to the right, in a single pass, thus solving the problem with a proposed complexity of O(n)
+
+- We can imagine a scenario where, where at any intermediate stage,
+our input array is divided into three parts, the first part carries all unique numbers in ascending order, the second part contains the repeated numbers and the third part contains numbers that haven't been processed yet. For 3 sections we need 2 pointers to act as dividers.
+
+

+
+- Let's start with 2 pointers, initially all at index 0,
+ 1. The unique pointer at 0, the left of which exist all unique numbers.
+ 2. The seek pointer, to the left upto ptr unique lie all repeated numbers, which also points to the first element of the number colony being processed.
+
+- In order to process a colony the bounds of a colony must be known, we need to spawn a look-ahead pointer from the seek pointer that moves right to the last number of that colony, to determine the bounds of the colony.
+
+
+
+- When processing a number colony, the first element moves to the unique section, the rest, if any move to the repeated section and then a new number colony is processed.
+
+- When every colony is processed, atleast one unique element is addded, we swap the seek pointer value with the unique pointer value. The seek pointer always points to a new un-processed number and the unique pointer always points to the first number of the repeated section.
+
+
+
+- We have now added a value to the unique section thus we need to increment the unique pointer, the number at the seek pointer is a repeated value and hence the seek pointer must also be incremented, to the value next to the limit pointer, to the start of a new nunmber colony until, the end of the array is reached.
+
+