sách gpt4 ăn đã đi

Giải thích chi tiết về C++ tìm tổng của hai số và trả về chỉ số dưới

In lại Tác giả: qq735679552 Thời gian cập nhật: 27-09-2022 22:32:09 29 4
mua khóa gpt4 giày nike

CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.

Bài viết trên blog CFSDN C++ này tìm tổng của hai số và trả về chỉ số dưới. Lời giải chi tiết được tác giả sưu tầm và biên soạn. Nếu các bạn quan tâm đến bài viết này thì nhớ like nhé.

Cho một mảng số nguyên và một mục tiêu giá trị đích là số nguyên, vui lòng tìm hai số nguyên trong mảng có tổng là mục tiêu giá trị đích và trả về chỉ số mảng của chúng.

Bạn có thể giả định rằng mỗi đầu vào sẽ chỉ tương ứng với một câu trả lời. Tuy nhiên, phần tử giống nhau trong mảng không thể xuất hiện lặp lại trong câu trả lời.

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

Ví dụ:

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

Đầu ra: [0,1].

Giải thích: Vì nums[0] + nums[1] == 9 nên [0, 1] được trả về.

Chế độ ACM

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include
#include
#include
sử dụng không gian tên tiêu chuẩn;
số nguyên chủ yếu(){
     vectơ< số nguyên > số{ 2, 7, 11, 13 }; // mảng ban đầu
     vectơ< số nguyên > điều; //Lưu kết quả
     số nguyên mục tiêu = 18;
     bản đồ không có thứ tự< số nguyên , số nguyên > ump;
     ( số nguyên i = 0; i < số.kích thước(); ++i){
         tự động nó = ump.find(mục tiêu - nums[i]);
         nếu như (nó != ump.end()){
             vec.push_back(nó->giây); //Chèn giá trị vào vec
             vec.push_back(i);
         }
         ump[số[i]] = i; // Lưu trữ các cặp khóa-giá trị
     }
     ( số nguyên i = 0; i < vec.size(); ++i){
         cout << vec[i] << endl;
     }
}

mẫu mã lõi

Phương pháp một:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
lớp học Giải pháp
{
công cộng :
     vectơ< số nguyên > HaiTổng(vector< số nguyên >&số, số nguyên mục tiêu)
     {
         số nguyên n = số lượng.kích thước;
         ( số nguyên tôi = 0; tôi < n - 1; ++i)
         {
             ( số nguyên j = i + 1; j < n; ++j)
             {
                 nếu như (nums[i] + nums[j] == mục tiêu)  
                     trở lại {tôi, ​​j};
             }
         }
         trở lại {};  //Empty {} đại diện cho một vector trống
     }
};

Để sử dụng vector, bạn cần thêm tệp tiêu đề.

?
1
2
#include
sử dụng không gian tên tiêu chuẩn;

tạo vectơ

?
1
2
3
4
vectơ< số nguyên > số; //Không chỉ định độ dài:
vectơ< số nguyên > số(n); // Chỉ định độ dài là n:
vectơ< số nguyên > số(10,1); // Xác định một vectơ có 10 phần tử nguyên và giá trị ban đầu của mỗi phần tử đã cho là 1
                        // Số được theo sau bởi dấu ngoặc nhọn (), không phải dấu ngoặc nhọn {}

Thêm phần tử

Thêm trực tiếp từ cuối mảng:

?
1
nums.push_back(1);

Gán trực tiếp giá trị cho vị trí thứ i:

?
1
số[i] = 1;

Xóa phần tử

Trực tiếp giảm độ dài của mảng, bằng cách nào đó xóa i cuối cùng:

?
1
nums.resize(nums.size-i);

Xóa phần tử cuối cùng:

?
1
nums.pop_back();

khác

?
1
2
3
nums.size(); // Lấy độ dài
sắp xếp(số.bắt đầu(), số.kết thúc()); //Sắp xếp(O(nlogn))
đảo ngược(nums.begin(), nums.end()); //lật
?
1
2
3
4
5
Hợp nhất hai vectơ: hợp nhất nums1 và nums2 và gán mảng đã hợp nhất cho nums
vectơ< số nguyên > số1(m),số2(n);
vectơ< số nguyên > số;
nums.resize(m+n);
hợp nhất (số1.bắt đầu(), số1.kết thúc(), số2.bắt đầu(), số2.kết thúc(), số);

Phương pháp hai:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
lớp học Giải pháp {
công cộng :
     vectơ< số nguyên > haiTổng(vector< số nguyên >& số, số nguyên mục tiêu) {
         bản đồ không có thứ tự< số nguyên , số nguyên >bảng băm;    //Tạo bảng băm
         ( số nguyên i=0;i //Nums.size phải được theo sau bởi dấu ngoặc đơn ()
         // for(auto i:nums) sai, vì auto chỉ có thể được sử dụng nếu bạn biết kiểu của i
             tự động nó = hashtable.find(target-nums[i]); // Kiểu trả về là iterator iterator
             nếu như (nó!=hashtable.end()){     // Tìm xem nó có trong bảng băm không
                 trở lại {it->second,i};   // đầu tiên là key (khóa), thứ hai là giá trị (value)
                                         //hashtable[nums[i]]=i, đầu tiên là nums[i], thứ hai là i
             }
             bảng băm[số[i]]=i;   // Lưu các cặp khóa-giá trị. hashtable(nums[i])=i; Lỗi, đó là [] không phải ()
         }
         trở lại {};
     }
};

Giải thích chi tiết về C++ tìm tổng của hai số và trả về chỉ số dưới

Sử dụng ô tô

Auto được giới thiệu trong C++ 11 có hai công dụng chính: tự động suy luận kiểu và chiếm dụng giá trị trả về.

1. Suy luận kiểu tự động.

?
1
2
3
4
5
lỗi tự động a;, không có biểu thức khởi tạo, không thể suy ra kiểu của a
tự động số nguyên a = 10; Lỗi, ngữ nghĩa của các biến tạm thời tự động không còn tồn tại trong C++ 11, đây là cách sử dụng tiêu chuẩn cũ.
xe a = 10;
xe c = 'MỘT' ;
xe ô tô "Xin chào" );

2. Trả về giá trị sử dụng.

?
1
auto v = soạn(2, 3.14); Kiểu của v là gấp đôi

bản đồ không có thứ tự

Tệp tiêu đề của unordered_map.

?
1
#include

Tạo vùng chứa unordered_map:

?
1
2
3
4
unordered_mapumap;
// Đã tạo một thùng chứa unordered_map có thể lưu trữ các cặp khóa-giá trị loại
bản đồ không có thứ tự< số nguyên , số nguyên >umap;
// int đầu tiên là key, int thứ hai là giá trị

Phương thức thành viên của vùng chứa unordered_map.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
started() //Trả về một trình lặp chuyển tiếp trỏ đến cặp khóa-giá trị đầu tiên trong vùng chứa.
end() //Trả về một trình lặp chuyển tiếp trỏ đến vị trí sau cặp khóa-giá trị cuối cùng trong vùng chứa.
find(key) //Tìm cặp khóa-giá trị với khóa là khóa. Nếu tìm thấy, hãy trả về một trình vòng lặp chuyển tiếp trỏ đến cặp khóa-giá trị; nếu không, hãy trả về một trình vòng lặp trỏ đến vị trí sau cặp khóa-giá trị cuối cùng; vùng chứa. một trình vòng lặp (nếu phương thức end() trả về một trình vòng lặp).
cbegin() vàbegin() //Các hàm đều giống nhau, ngoại trừ thuộc tính const được thêm vào chúng, nghĩa là, iterator được trả về bởi phương thức này không thể được sử dụng để sửa đổi các cặp khóa-giá trị được lưu trữ trong vùng chứa.
cend() và end() //Các hàm đều giống nhau, ngoại trừ thuộc tính const được thêm vào, nghĩa là iterator được trả về bởi phương thức này không thể được sử dụng để sửa đổi các cặp khóa-giá trị được lưu trữ trong vùng chứa.
trống () // Nếu vùng chứa trống, trả về true; nếu không thì sai.
size() //Trả về số cặp khóa-giá trị được lưu trữ trong vùng chứa hiện tại.
max_size() //Trả về số lượng cặp khóa-giá trị tối đa mà vùng chứa có thể chứa.
operator[key] //Toán tử [] bị quá tải trong lớp mẫu này. Chức năng của nó là truy cập các phần tử trong một mảng. Miễn là khóa khóa của cặp khóa-giá trị được cung cấp, giá trị tương ứng với khóa có thể là. thu được. Lưu ý rằng nếu không có cặp khóa-giá trị nào có khóa làm khóa trong vùng chứa hiện tại thì nó sẽ sử dụng khóa để chèn một cặp khóa-giá trị mới vào vùng chứa hiện tại.
at(key) //Trả về giá trị tương ứng với khóa khóa được lưu trong vùng chứa. Nếu khóa không tồn tại, một ngoại lệ out_of_range sẽ được đưa ra.
count(key) //Tìm số cặp khóa-giá trị có khóa trong vùng chứa.
bằng_range(key) //Trả về một đối tượng cặp, chứa 2 vòng lặp, được sử dụng để biểu thị phạm vi của các cặp khóa-giá trị có khóa là khóa trong vùng chứa hiện tại.
emplace() //Thêm cặp khóa-giá trị mới vào vùng chứa, hiệu quả hơn phương thức Insert().
emplace_hint() //Thêm cặp khóa-giá trị mới vào vùng chứa, hiệu quả hơn phương thức Insert().
Insert() //Thêm cặp khóa-giá trị mới vào vùng chứa.
erase() //Xóa cặp khóa-giá trị được chỉ định.
clear() //Xóa vùng chứa, nghĩa là xóa tất cả các cặp khóa-giá trị được lưu trữ trong vùng chứa.
swap() // Hoán đổi các cặp khóa-giá trị được lưu trữ trong hai vùng chứa unordered_map, với điều kiện là loại của hai vùng chứa phải hoàn toàn bằng nhau.
xô_count() //Trả về số lượng nhóm (danh sách liên kết tuyến tính đại diện cho một nhóm) được sử dụng khi lưu trữ các cặp khóa-giá trị ở cuối vùng chứa hiện tại.
max_bucket_count() //Trả về số lượng nhóm tối đa có thể được sử dụng bởi lớp dưới cùng của vùng chứa unordered_map trong hệ thống hiện tại.
xô_size(n) //Trả về số cặp khóa-giá trị được lưu trữ trong nhóm thứ n.
xô(key) //Trả về số nhóm nơi đặt cặp khóa-giá trị với khóa làm khóa.
Load_factor() //Trả về hệ số tải hiện tại trong vùng chứa unordered_map. Hệ số tải đề cập đến tỷ lệ giữa số cặp khóa-giá trị được lưu trữ trong vùng chứa hiện tại (size()) với số lượng nhóm được sử dụng (bucket_count()), nghĩa là Load_factor() = size() / Bucket_count() .
max_load_factor() //Trả về hoặc đặt hệ số tải của vùng chứa unordered_map hiện tại.
rehash(n) //Đặt số lượng nhóm được sử dụng bởi lớp dưới cùng của vùng chứa hiện tại thành n.
dự trữ() //Đặt số lượng nhóm (nghĩa là giá trị trả về của phương thức Buck_count()) thành số cần thiết để chứa ít nhất các phần tử đếm (không vượt quá hệ số tải tối đa) và sắp xếp lại vùng chứa.
hash_function() //Trả về đối tượng hàm băm được vùng chứa hiện tại sử dụng.

Tìm xem phần tử có tồn tại không

Nếu có unordered_map mp; hãy tìm xem x có trong bản đồ không

?
1
2
Cách 1: Nếu có mp.find(x) != mp.end()
Cách 2: Nếu có mp.count(x) != 0

loại

Trong C++, khi định nghĩa một đối tượng lớp là đối tượng con trỏ, bạn cần sử dụng -> để trỏ đến các thành viên của lớp; khi định nghĩa một đối tượng chung, bạn cần sử dụng "." để trỏ đến các thành viên của lớp. Ví dụ:

?
1
2
3
4
lớp học MỘT
{  
     công cộng chơi();
}

Nếu được xác định như sau:

A *p sử dụng: p->play(); Phía bên trái là con trỏ cấu trúc.

A p sử dụng: p.paly(); Vế trái là biến cấu trúc.

Tóm tắt:

Mũi tên (->): Phía bên trái phải là con trỏ .

Dấu chấm (.): Vế trái phải là một thực thể.

Bài viết này kết thúc tại đây, tôi hy vọng nó có thể hữu ích cho bạn và tôi hy vọng bạn có thể chú ý hơn đến nội dung của tôi! .

Liên kết gốc: https://blog.csdn.net/weixin_49358890/article/details/119118567.

Cuối cùng, bài viết này về lời giải thích chi tiết của C++ về cách tìm tổng của hai số và trả về chỉ số dưới. Nếu bạn muốn biết thêm về lời giải thích chi tiết của C++ về cách tìm tổng của hai số và trả về chỉ số dưới, vui lòng tìm kiếm bài viết CFSDN hoặc. tiếp tục duyệt các bài viết liên quan, tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .

29 4 0
qq735679552
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress