diff --git a/top-100-liked/1-two-sum/two-sum.md b/top-100-liked/1-two-sum/two-sum.md
new file mode 100644
index 0000000..b902ff3
--- /dev/null
+++ b/top-100-liked/1-two-sum/two-sum.md
@@ -0,0 +1,40 @@
+# 1. Two Sum
+
+
+
+Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.
+
+You may assume that each input would have exactly one solution, and you may not use the same element twice.
+
+You can return the answer in any order.
+
+
+
+Example 1:
+
+Input: nums = [2,7,11,15], target = 9
+Output: [0,1]
+Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].
+
+Example 2:
+
+Input: nums = [3,2,4], target = 6
+Output: [1,2]
+
+Example 3:
+
+Input: nums = [3,3], target = 6
+Output: [0,1]
+
+
+
+Constraints:
+
+- 2 <= nums.length <= 104
+- 109 <= nums[i] <= 109
+- 109 <= target <= 109
+- Only one valid answer exists.
+
+
+
+Follow-up: Can you come up with an algorithm that is less than O(n2) time complexity?
\ No newline at end of file
diff --git a/top-100-liked/1-two-sum/twoSum.js b/top-100-liked/1-two-sum/twoSum.js
new file mode 100644
index 0000000..f9aa317
--- /dev/null
+++ b/top-100-liked/1-two-sum/twoSum.js
@@ -0,0 +1,21 @@
+// Method 1: 0(n2) time complexity
+const findTwoSum = (nums, target) => {
+ for (let i = 0; i < nums.length - 1; i++) {
+ for (let j = i + 1; j < nums.length; j++) {
+ if (nums[i] + nums[j] === target) return [i, j];
+ }
+ }
+};
+
+
+// Method 2: less than 0(n2) time complexity
+const twoSum = (nums, target) => {
+ const map = new Map();
+
+ for (let i = 0; i < nums.length; i++) {
+ const difference = target - nums[i];
+
+ if (map.has(difference)) return [map.get(difference), i];
+ map.set(nums[i], i);
+ }
+};
\ No newline at end of file