diff --git a/Sprint-1/JavaScript/calculateSumAndProduct/calculateSumAndProduct.js b/Sprint-1/JavaScript/calculateSumAndProduct/calculateSumAndProduct.js index ce738c3..e971d3f 100644 --- a/Sprint-1/JavaScript/calculateSumAndProduct/calculateSumAndProduct.js +++ b/Sprint-1/JavaScript/calculateSumAndProduct/calculateSumAndProduct.js @@ -9,21 +9,20 @@ * "product": 30 // 2 * 3 * 5 * } * - * Time Complexity: - * Space Complexity: - * Optimal Time Complexity: + * Time Complexity:O(n) + * Space Complexity: O(1) + * Optimal Time Complexity:O(n) * * @param {Array} numbers - Numbers to process * @returns {Object} Object containing running total and product */ + +// The refactor code .... export function calculateSumAndProduct(numbers) { let sum = 0; + let product =1; for (const num of numbers) { sum += num; - } - - let product = 1; - for (const num of numbers) { product *= num; } @@ -32,3 +31,5 @@ export function calculateSumAndProduct(numbers) { product: product, }; } + +// The refactor code is better because it combine two separate loop into one and calculate the sum & Product. diff --git a/Sprint-1/JavaScript/findCommonItems/findCommonItems.js b/Sprint-1/JavaScript/findCommonItems/findCommonItems.js index 5619ae5..df1f5ef 100644 --- a/Sprint-1/JavaScript/findCommonItems/findCommonItems.js +++ b/Sprint-1/JavaScript/findCommonItems/findCommonItems.js @@ -1,14 +1,26 @@ /** * Finds common items between two arrays. * - * Time Complexity: - * Space Complexity: - * Optimal Time Complexity: + * Time Complexity: O(n2) + * Space Complexity: O(n) + * Optimal Time Complexity:O(n) * * @param {Array} firstArray - First array to compare * @param {Array} secondArray - Second array to compare * @returns {Array} Array containing unique common items */ -export const findCommonItems = (firstArray, secondArray) => [ - ...new Set(firstArray.filter((item) => secondArray.includes(item))), -]; + +//refactor code +export function findCommonItems (firstArray, secondArray){ + + const firstSet = new Set(firstArray); + const secondSet = new Set(secondArray); + + const commonSet = firstSet.intersection(secondSet); + + + return [...commonSet]; +} + + +// This refactor code is better because it avoid to check every single item from two arrays for filter items & searching that each items includes in the second array . diff --git a/Sprint-1/JavaScript/hasPairWithSum/hasPairWithSum.js b/Sprint-1/JavaScript/hasPairWithSum/hasPairWithSum.js index dd2901f..35ad203 100644 --- a/Sprint-1/JavaScript/hasPairWithSum/hasPairWithSum.js +++ b/Sprint-1/JavaScript/hasPairWithSum/hasPairWithSum.js @@ -1,14 +1,16 @@ /** * Find if there is a pair of numbers that sum to a given target value. * - * Time Complexity: - * Space Complexity: - * Optimal Time Complexity: + * Time Complexity:O(n2) + * Space Complexity:O(1) + * Optimal Time Complexity:O(n) * * @param {Array} numbers - Array of numbers to search through * @param {number} target - Target sum to find * @returns {boolean} True if pair exists, false otherwise */ + +/* export function hasPairWithSum(numbers, target) { for (let i = 0; i < numbers.length; i++) { for (let j = i + 1; j < numbers.length; j++) { @@ -19,3 +21,27 @@ export function hasPairWithSum(numbers, target) { } return false; } + */ + +//refactor code + +export function hasPairWithSum(numbers,target){ + const seen = new Set(); + + for (const num of numbers) + { + const needed = target-num; + if (seen.has(needed)) + { + return true; + } + else + { + seen.add(num); + } + } + +} + + +// The refactor code is better because it avoid nested loop but it create set so space complexity will be o(n). \ No newline at end of file diff --git a/Sprint-1/JavaScript/removeDuplicates/removeDuplicates.mjs b/Sprint-1/JavaScript/removeDuplicates/removeDuplicates.mjs index dc5f771..2966f3d 100644 --- a/Sprint-1/JavaScript/removeDuplicates/removeDuplicates.mjs +++ b/Sprint-1/JavaScript/removeDuplicates/removeDuplicates.mjs @@ -1,13 +1,15 @@ /** * Remove duplicate values from a sequence, preserving the order of the first occurrence of each value. * - * Time Complexity: - * Space Complexity: - * Optimal Time Complexity: + * Time Complexity:O(n2) + * Space Complexity: O(n) + * Optimal Time Complexity: O(n) * * @param {Array} inputSequence - Sequence to remove duplicates from * @returns {Array} New sequence with duplicates removed */ + +/* export function removeDuplicates(inputSequence) { const uniqueItems = []; @@ -34,3 +36,15 @@ export function removeDuplicates(inputSequence) { return uniqueItems; } + */ + +//refactor code +export function removeDuplicates(inputSequence) +{ + const outputSequence = [...new Set(inputSequence)]; + return outputSequence; +} + + +//The refactor code is better because it avoid the nested for loop operation .... +