Problem Definition
Write a function that meets the following conditions:
Given an integer array, write a function that returns the indices of the two numbers that add up to a specific target value. Assume that there is always a solution, and you may not use the same element twice.
function twoSum(nums, target) {
// Write your code here.
}
Input Example
Input:
twoSum([2, 7, 11, 15], 9)
Output Example
Output:
0, 1
Solution Process
To solve this problem, we can use two approaches. The first is to use a double loop, and the second is to use a hash map. Considering efficiency, we will choose to use a hash map.
1. Problem Analysis
What we need to do is look at each element of the array and find the value that, when subtracted from the target, gives us that element. When we find this value, we can return the index of that element.
2. Using Hash Map
As a first step, we create an empty hash map (object). We traverse the array, adding each element to the hash map and also storing its index. Then, with each iteration, we check if the value that equals the target minus the current element exists in the hash map. If it does, we return that index.
function twoSum(nums, target) {
const map = new Map();
for (let i = 0; i < nums.length; i++) {
const complement = target - nums[i];
if (map.has(complement)) {
return [map.get(complement), i];
}
map.set(nums[i], i);
}
}
3. Debugging Cases
After writing the code, it is important to check for parts that may cause errors. Through debugging, you can verify whether the logic for ‘finding the value equal to the target minus the current element’ works as intended. You can also use console logs to check the status of variables at each step.
function twoSum(nums, target) {
const map = new Map();
for (let i = 0; i < nums.length; i++) {
const complement = target - nums[i];
console.log(`Current Number: ${nums[i]}, Complement: ${complement}`);
if (map.has(complement)) {
console.log(`Found complement: ${complement} at index ${map.get(complement)}`);
return [map.get(complement), i];
}
map.set(nums[i], i);
}
}
Conclusion
By solving the problem in the above manner, you can utilize the characteristics of JavaScript and conduct debugging more easily. After writing the code, it is always a good idea to use debugging tools (such as the developer tools in the browser) to test various cases and check the status of each variable, focusing on a deeper understanding of the problem.
In this lecture, we learned about algorithm problem-solving in JavaScript and the importance of debugging. We hope that this approach will help you in your coding test preparations.