Share two sum leetcode c++,

lazyduck983

New member
#two Sum, #LeetCode, #C ++, #algorithms, #data Structures ** Hai tổng trong LeetCode với C ++ **

Hai vấn đề tổng là một vấn đề kinh điển trong khoa học máy tính.Đưa ra một mảng số nguyên và giá trị mục tiêu, hãy tìm hai số trong mảng cộng vào giá trị đích.Vấn đề rất đơn giản để nêu rõ, nhưng nó có thể khá khó khăn để giải quyết hiệu quả.

Trong bài viết này, chúng tôi sẽ giải quyết hai vấn đề tổng trong C ++ bằng hai cách tiếp cận khác nhau: cách tiếp cận vũ lực và cách tiếp cận bảng băm.Chúng tôi cũng sẽ so sánh độ phức tạp về thời gian và không gian của hai cách tiếp cận.

** Cách tiếp cận vũ phu **

Cách tiếp cận vũ phu là cách đơn giản nhất để giải quyết hai vấn đề tổng.Nó liên quan đến việc lặp lại thông qua mảng các số nguyên và đối với mỗi số nguyên, kiểm tra xem có số nguyên khác trong mảng có giá trị mục tiêu không.Nếu một số nguyên như vậy được tìm thấy, hai số nguyên được trả lại.

Sau đây là mã giả cho cách tiếp cận vũ phu:

`` `
chức năng twosum (nums, target):
Đối với I trong phạm vi (Len (nums)):
Đối với J trong phạm vi (i + 1, len (nums)):
Nếu nums + nums [j] == Target:
Trở về [I, J]
`` `

Cách tiếp cận vũ phu rất đơn giản để thực hiện, nhưng nó cũng rất kém hiệu quả.Độ phức tạp của thời gian của phương pháp tiếp cận vũ phu là O (n^2), trong đó n là chiều dài của mảng.Điều này là do thuật toán phải lặp lại thông qua các mảng n lần và đối với mỗi lần lặp, nó phải kiểm tra n các yếu tố khác trong mảng.

** Cách tiếp cận bàn băm **

Cách tiếp cận bảng Hash là một cách hiệu quả hơn để giải quyết hai vấn đề tổng.Nó liên quan đến việc tạo một bảng băm ánh xạ từng số nguyên trong mảng thành chỉ mục của nó.Sau đó, đối với mỗi số nguyên trong mảng, chúng tôi kiểm tra xem giá trị đích có trừ đi số nguyên trong bảng băm không.Nếu có, thì hai số nguyên cộng với giá trị mục tiêu đã được tìm thấy.

Sau đây là mã giả cho cách tiếp cận bảng băm:

`` `
chức năng twosum (nums, target):
Hashtable = {}
Đối với I trong phạm vi (Len (nums)):
Hashtable [nums ] = i

Đối với I trong phạm vi (Len (nums)):
TargetValue = Target - nums
Nếu TargetValue trong Hashtable:
Trả lại [i, Hashtable [TargetValue]]
`` `

Cách tiếp cận bảng băm hiệu quả hơn nhiều so với cách tiếp cận vũ phu.Độ phức tạp của thời gian của cách tiếp cận bảng băm là O (n), trong đó n là chiều dài của mảng.Điều này là do thuật toán chỉ được lặp qua mảng một lần và nó chỉ phải kiểm tra bảng băm cho mỗi số nguyên trong mảng.

** So sánh hai cách tiếp cận **

Bảng sau so sánh độ phức tạp về thời gian và không gian của hai cách tiếp cận:

|Cách tiếp cận |Độ phức tạp về thời gian |Độ phức tạp không gian |
| --- | --- | --- |
|Vũ phu |O (n^2) |O (1) |
|Bảng băm |O (n) |O (n) |

Như bạn có thể thấy, cách tiếp cận bảng băm hiệu quả hơn nhiều so với cách tiếp cận vũ phu.Tuy nhiên, cách tiếp cận bảng Hash cũng đòi hỏi nhiều không gian hơn cách tiếp cận vũ phu.

** Bạn nên sử dụng phương pháp nào? **

Cách tiếp cận tốt nhất để sử dụng để giải quyết hai vấn đề tổng phụ thuộc vào các ràng buộc cụ thể của vấn đề của bạn.Nếu bạn lo lắng về độ phức tạp về thời gian, thì bạn nên sử dụng phương pháp bảng băm.Tuy nhiên, nếu bạn quan tâm đến sự phức tạp của không gian, thì bạn nên sử dụng phương pháp tiếp cận vũ phu.

** Thực hiện bảng Hash trong C ++ **

Sau đây là việc triển khai cách tiếp cận bảng Hash trong C ++:

`` `C ++
#include <Istream>
#include <Nemedered_map>

sử dụng không gian tên STD;

int main () {
// Tạo một mảng số nguyên.
int nums [] = {1,
=======================================
#two Sum, #LeetCode, #C++, #algorithms, #data Structures **Two Sum in Leetcode with C++**

The Two Sum problem is a classic problem in computer science. Given an array of integers and a target value, find two numbers in the array that add up to the target value. The problem is simple to state, but it can be quite challenging to solve efficiently.

In this article, we will solve the Two Sum problem in C++ using two different approaches: a brute-force approach and a hash table approach. We will also compare the time and space complexity of the two approaches.

**Brute-Force Approach**

The brute-force approach is the simplest way to solve the Two Sum problem. It involves iterating through the array of integers, and for each integer, checking if there is another integer in the array that adds up to the target value. If such an integer is found, the two integers are returned.

The following is the pseudocode for the brute-force approach:

```
function twoSum(nums, target):
for i in range(len(nums)):
for j in range(i + 1, len(nums)):
if nums + nums[j] == target:
return [i, j]
```

The brute-force approach is very simple to implement, but it is also very inefficient. The time complexity of the brute-force approach is O(n^2), where n is the length of the array. This is because the algorithm has to iterate through the array n times, and for each iteration, it has to check n other elements in the array.

**Hash Table Approach**

The hash table approach is a more efficient way to solve the Two Sum problem. It involves creating a hash table that maps each integer in the array to its index. Then, for each integer in the array, we check if the target value minus the integer is in the hash table. If it is, then the two integers that add up to the target value have been found.

The following is the pseudocode for the hash table approach:

```
function twoSum(nums, target):
hashTable = {}
for i in range(len(nums)):
hashTable[nums] = i

for i in range(len(nums)):
targetValue = target - nums
if targetValue in hashTable:
return [i, hashTable[targetValue]]
```

The hash table approach is much more efficient than the brute-force approach. The time complexity of the hash table approach is O(n), where n is the length of the array. This is because the algorithm only has to iterate through the array once, and it only has to check the hash table for each integer in the array.

**Comparison of the Two Approaches**

The following table compares the time and space complexity of the two approaches:

| Approach | Time Complexity | Space Complexity |
|---|---|---|
| Brute-Force | O(n^2) | O(1) |
| Hash Table | O(n) | O(n) |

As you can see, the hash table approach is much more efficient than the brute-force approach. However, the hash table approach also requires more space than the brute-force approach.

**Which Approach Should You Use?**

The best approach to use for solving the Two Sum problem depends on the specific constraints of your problem. If you are concerned about time complexity, then you should use the hash table approach. However, if you are concerned about space complexity, then you should use the brute-force approach.

**Hash Table Implementation in C++**

The following is an implementation of the hash table approach in C++:

```c++
#include <iostream>
#include <unordered_map>

using namespace std;

int main() {
// Create an array of integers.
int nums[] = {1,
 
Join Telegram ToolsKiemTrieuDoGroup
Back
Top