From 3fbe023fcc5d095044bf7c8f8569ac8bcd69eb6c Mon Sep 17 00:00:00 2001 From: Ashif Hassan Date: Wed, 3 Sep 2025 13:03:55 +0530 Subject: [PATCH 1/3] add two sum problem and solution --- top-100-liked/1-two-sum/two-sum.md | 40 ++++++++++++++++++++++++++++++ top-100-liked/1-two-sum/twoSum.js | 25 +++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 top-100-liked/1-two-sum/two-sum.md create mode 100644 top-100-liked/1-two-sum/twoSum.js 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..01730df --- /dev/null +++ b/top-100-liked/1-two-sum/twoSum.js @@ -0,0 +1,25 @@ +// 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 From 1084013fe9d30939f59733a92d23dc3e42891fc3 Mon Sep 17 00:00:00 2001 From: Ashif Hassan Date: Wed, 3 Sep 2025 13:05:25 +0530 Subject: [PATCH 2/3] update two sum solution --- top-100-liked/1-two-sum/twoSum.js | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/top-100-liked/1-two-sum/twoSum.js b/top-100-liked/1-two-sum/twoSum.js index 01730df..63b6b13 100644 --- a/top-100-liked/1-two-sum/twoSum.js +++ b/top-100-liked/1-two-sum/twoSum.js @@ -1,25 +1,25 @@ // 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]; - } - } + 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(); + const map = new Map(); - for (let i = 0; i < nums.length; i++) { - const difference = target - nums[i]; + 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); + if (map.has(difference)) { + return [map.get(difference), i]; } + + map.set(nums[i], i); + } }; \ No newline at end of file From 2018f676619687888adc99a44921be580375fd17 Mon Sep 17 00:00:00 2001 From: Ashif Hassan Date: Wed, 3 Sep 2025 13:07:35 +0530 Subject: [PATCH 3/3] update two sum solution --- top-100-liked/1-two-sum/twoSum.js | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/top-100-liked/1-two-sum/twoSum.js b/top-100-liked/1-two-sum/twoSum.js index 63b6b13..f9aa317 100644 --- a/top-100-liked/1-two-sum/twoSum.js +++ b/top-100-liked/1-two-sum/twoSum.js @@ -2,13 +2,12 @@ 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]; - } + 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(); @@ -16,10 +15,7 @@ const twoSum = (nums, target) => { for (let i = 0; i < nums.length; i++) { const difference = target - nums[i]; - if (map.has(difference)) { - return [map.get(difference), i]; - } - + if (map.has(difference)) return [map.get(difference), i]; map.set(nums[i], i); } }; \ No newline at end of file