1. Two Sum - Improve Algorithm with Leetcode

**1. Hai Tổng**


**Dễ**


Cho một mảng các số nguyên `nums` và một số nguyên `target`, trả về _các chỉ số của hai số sao cho tổng của chúng bằng_ `target`.


Bạn có thể giả định rằng mỗi input sẽ có **_chính xác_ một lời giải**, và bạn không được sử dụng cùng một phần tử hai lần. 


Bạn có thể trả về câu trả lời theo bất kỳ thứ tự nào.


**Ví dụ 1:**


    Đầu vào: nums = [2,7,11,15], target = 9

    Đầu ra: [0,1]

    Giải thích: Vì nums[0] + nums[1] == 9, chúng ta trả về [0, 1].


**Ví dụ 2:**


    Đầu vào: nums = [3,2,4], target = 6

    Đầu ra: [1,2]


**Ví dụ 3:**


    Đầu vào: nums = [3,3], target = 6

    Đầu ra: [0,1]


**Ràng buộc:**  


* `2 <= nums.length <= 104`


* `-109 <= nums[i] <= 109`  


* `-109 <= target <= 109`


* **Chỉ tồn tại duy nhất một câu trả lời đúng.**


**Thêm:** Bạn có thể đưa ra thuật toán có độ phức tạp thời gian nhỏ hơn O(n^2) không?
Code Javascript:

function twoSum(arr, n) {
  for (let i = 0; i < arr.length; i++) {
    for (let j = i + 1; j < arr.length; j++) {
      if(n - arr[j] === arr[i]) {
        return [i, j]; 
      }
    }
  }
}

function twoSum(nums, target) {
  const hashMap = {};
  
  for(let i = 0; i < nums.length; i++) {
    const num = nums[i];
    
    if(hashMap[target - num] !== undefined) {
      return [i, hashMap[target - num]];
    }
    
    hashMap[num] = i; 
  }
}  
Đặng Quốc Huy

Tôi là Đặng Quốc Huy. Hiện tại, tôi là sinh viên Trường Đại học CNTT & Truyền thông Việt Hàn! Trong tương lai tôi muốn trở thành một lập trình viên giỏi. Đây là blog chia sẻ những gì mà tôi biết!