Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng số làm đối số đầu tiên và một tổng mục tiêu làm đối số thứ hai.
Hàm sẽ tìm và trả về chỉ số của hai số như vậy từ mảng (liên tiếp hoặc không liên tiếp) cộng lại để đưa ra tổng mục tiêu (nếu có). Điều kiện là chúng ta phải thực hiện việc này theo thời gian tuyến tính (một lần lặp lại).
Chúng tôi sẽ tiếp tục đếm các số được lặp lại bằng cách sử dụng bản đồ và nếu tại bất kỳ thời điểm nào chúng tôi gặp hai số cung cấp tổng mục tiêu, chúng tôi sẽ trả về ngay lập tức.
Ví dụ
Mã cho điều này sẽ là -
const arr = [1, 3, 5, 7, 9, 11]; const target = 16; const twoSum = function(arr, target) { const map = new Map(); for(let i = 0; i < arr.length; i++) { let num = arr[i]; if(map.get(num) === undefined){ map.set(target−num, i) }else{ return [map.get(num), i] }; }; }; console.log(twoSum(arr, target));
Đầu ra
Và đầu ra trong bảng điều khiển sẽ là -
[3, 4]