Skip to content

Commit 5212626

Browse files
committed
refactor code for hasPairWithSum
1 parent 4aa063a commit 5212626

1 file changed

Lines changed: 23 additions & 9 deletions

File tree

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,35 @@
11
/**
22
* Find if there is a pair of numbers that sum to a given target value.
33
*
4-
* Time Complexity:
5-
* Space Complexity:
6-
* Optimal Time Complexity:
4+
* Time Complexity: o(n2) the function use 2 nested loop
5+
* Space Complexity:o(1)no additional significant memory used
6+
* Optimal Time Complexity: O(n) — in the refactored version using a Set for lookups
77
*
88
* @param {Array<number>} numbers - Array of numbers to search through
99
* @param {number} target - Target sum to find
1010
* @returns {boolean} True if pair exists, false otherwise
1111
*/
12+
// export function hasPairWithSum(numbers, target) {
13+
// for (let i = 0; i < numbers.length; i++) {
14+
// for (let j = i + 1; j < numbers.length; j++) {
15+
// if (numbers[i] + numbers[j] === target) {
16+
// return true;
17+
// }
18+
// }
19+
// }
20+
// return false;
21+
// }
22+
1223
export function hasPairWithSum(numbers, target) {
13-
for (let i = 0; i < numbers.length; i++) {
14-
for (let j = i + 1; j < numbers.length; j++) {
15-
if (numbers[i] + numbers[j] === target) {
16-
return true;
17-
}
24+
const numbersNeeded = new Set(); // stores numbers we've already seen
25+
26+
for (const num of numbers) {
27+
const requiredNumber = target - num;
28+
if (numbersNeeded.has(requiredNumber)) {
29+
return true; // found a pair!
1830
}
31+
numbersNeeded.add(num); // remember current number
1932
}
20-
return false;
33+
34+
return false; // no pair found
2135
}

0 commit comments

Comments
 (0)