Cho hai mảng được sắp xếp, tìm liên minh và giao lộ của họ. Ví dụ:
Example:
Đầu vào: ARR1 [] = {1, 3, 4, 5, 7} & nbsp; & nbsp; & nbsp; & nbsp; ARR2 [] = {2, 3, 5, 6} & nbsp; đầu ra: Union: {1, 2, 3, 4, 5, 6, 7} & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; giao lộ: {3, 5} arr1[] = {1, 3, 4, 5, 7}
arr2[] = {2, 3, 5, 6}
Output: Union : {1, 2, 3, 4, 5, 6, 7}
Intersection : {3, 5}Đầu vào: ARR1 [] = {2, 5, 6} & nbsp; & nbsp; & nbsp; & nbsp; ARR2 [] = {4, 6, 8, 10} & nbsp; đầu ra: Union: {2, 4, 5, 6, 8, 10} & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; giao lộ: {6} arr1[] = {2, 5, 6}
arr2[] = {4, 6, 8, 10}
Output: Union : {2, 4, 5, 6, 8, 10}
Intersection : {6}
Chúng tôi thực sự khuyên bạn nên nhấp vào đây và thực hành nó, trước khi chuyển sang giải pháp.
Liên minh các mảng ARR1 [] và ARR2 []
Để tìm sự kết hợp của hai mảng được sắp xếp, hãy làm theo quy trình hợp nhất sau: & nbsp;
1] Sử dụng hai biến chỉ mục I và J, giá trị ban đầu I = 0, j = 0 & nbsp; 2] Nếu ARR1 [i] nhỏ hơn ARR2 [J] sau đó in ARR1 [i] và tăng i. & NBSP; 3] [i] lớn hơn ARR2 [J] sau đó in ARR2 [J] và tăng J. mảng.
2] If arr1[i] is smaller than arr2[j] then print arr1[i] and increment i.
3] If arr1[i] is greater than arr2[j] then print arr2[j] and increment j.
4] If both are same then print any of them and increment both i and j.
5] Print remaining elements of the larger array.
Dưới đây là việc thực hiện phương pháp trên: & nbsp;
C++
#include
using
namespace
std;
void
printUnion[
int
arr1[],
int
#include
5
#include
6int
#include
8
#include
6using
0 using
1
using
2using
3 using
4
using
5using
6using
7using
8
using
2namespace
0 using
3 namespace
2
using
5namespace
4using
7using
8
using
2namespace
0 #include
5
using
5namespace
4using
7using
8
using
5std;
5
using
2std;
7
#include
6std;
7
#include
6using
0 void
2
using
2using
6using
7using
8
#include
6using
0 void
9
using
2namespace
4using
7using
8
std;
7
int
printUnion[
6
#include
5
#include
6int
int
0
#include
6int
int
3
#include
6int
int
6__777778 ____77778080
‘
#include
6arr1[],
9
#include
6int
1 int
2
std;
7
C
int
4
void
printUnion[
int
arr1[],
int
#include
5
#include
6int
#include
8
#include
6using
0 using
1
using
2using
3 using
4
using
5#include
16#include
17#include
18#include
19
using
2namespace
0 using
3 namespace
2
using
5#include
16#include
17#include
18#include
28
using
2namespace
0 #include
5
using
5#include
16#include
17#include
18#include
28
using
5std;
5
using
2std;
7
#include
6std;
7
#include
6using
0 void
2
using
2using
6using
7using
8
#include
6using
0 void
9
using
2#include
16#include
17#include
18#include
28
std;
7
int
printUnion[
6
#include
5
#include
6int
int
0
#include
6int
int
3
#include
6int
int
6__777778 ____77778080
‘
#include
6arr1[],
9
#include
6#include
86#include
87
#include
6int
1 int
2
std;
7
C
using
2#include
16#include
17#include
18#include
19
Java
#include
6#include
5
#include
92 #include
93
#include
6#include
95 int
printUnion[
int
arr1[],
int
using
2int
using
10using
11using
12using
11using
8
using
21using
22using
7using
24
using
2using
0 using
1
using
21using
30using
7using
24
using
5using
3 using
4
using
21using
30using
7using
24
using
21std;
5
using
5std;
7
using
2std;
7
using
5namespace
0 using
3 namespace
2
using
5using
22using
7using
24
using
5namespace
0 #include
5
using
5using
30using
7using
24
using
2using
0 void
2
#include
6std;
7
using
2using
0 void
9
#include
6#include
5
using
2int
1 using
11using
8
#include
6using
67 #include
95 void
using
70
Các
Các
using
2arr1[],
9
#include
6std;
7
std;
7
Python3
using
2int
using
99
using
2int
namespace
02
namespace
08 namespace
09
#include
6namespace
11namespace
12 using
11using
777____211
using
5namespace
25namespace
26namespace
12using
7namespace
29
#include
6using
0 namespace
18namespace
19 namespace
20
using
2namespace
36 namespace
37
using
5namespace
25namespace
40namespace
12using
7namespace
29
using
5namespace
45namespace
32namespace
12 using
76
using
2namespace
0namespace
51
using
5namespace
25namespace
40namespace
12using
7namespace
29
using
5namespace
59namespace
32namespace
12 using
76
using
5namespace
31namespace
32namespace
12 using
76
#include
6using
0 namespace
70
using
2namespace
25namespace
26namespace
12using
7namespace
29
using
2namespace
31namespace
32namespace
12 using
76
#include
6using
0 namespace
20
using
2namespace
25namespace
40namespace
12using
7namespace
29
using
2namespace
59namespace
32namespace
12 using
76
Các
std;
09namespace
12 namespace
98using
78__
std;
20namespace
12 std;
22223
std;
24namespace
12 std;
22____std;
27
std;
28
C#
using
std;
30
#include
92 std;
32
#include
6#include
95 int
printUnion[
int
std;
38
std;
39int
std;
41int
#include
2int
#include
4
#include
6#include
5
using
2int
#include
8
using
2using
0 using
1
using
5using
3 using
4
using
21std;
58using
7using
24
using
5namespace
0 using
3 namespace
2
using
21std;
66using
7using
24
using
5namespace
0 #include
5
using
21std;
66using
7using
24
using
21std;
5
using
5std;
7
using
2std;
7
using
2using
0 void
2
using
5std;
58using
7using
24
using
2using
0 void
9
using
5std;
66using
7using
24
using
2int
1 int
2
#include
6std;
7
#include
6using
67 #include
95 void
void
05
#include
6#include
5
using
2int
void
10
using
2int
void
13
using
2int
void
16
using
2int
void
19
using
2arr1[],
9
#include
6std;
7
std;
7
PHP
void
25
void
26 printUnion[
void
28using
777____530void
31
void
32void
33using
777void
35namespace
29
#include
5
#include
6void
39 void
40void
41 void
42
#include
6using
0 #include
17void
39 void
47void
33
#include
6#include
5
using
2using
3 #include
17void
28namespace
98void
39void
62void
30namespace
98void
41void
66
using
5void
68#include
17void
28namespace
98void
39void
73using
7using
24
using
2namespace
0 using
3 #include
17void
30namespace
98void
41void
62 ____528namespace
98void
39void
66
Các
using
2namespace
0
using
2#include
5
using
5void
68#include
17void
30namespace
98void
41void
73using
7using
24
using
5void
39printUnion[
12
using
2std;
7
#include
6std;
7
#include
6using
0#include
17void
39 void
47void
33namespace
29
using
2void
68#include
17void
28namespace
98void
39void
73using
7using
24
#include
6using
0#include
17void
41 void
47void
35namespace
29
using
2void
68#include
17void
30namespace
98void
41void
73using
7using
24
std;
7
void
28 printUnion[
51printUnion[
522printUnion[
53
void
30 printUnion[
51printUnion[
522printUnion[
57
void
33 printUnion[
59void
28using
24
void
35 printUnion[
59void
30using
24
printUnion[
void
28using
77void
30using
77void
33using
77void
35using
24
printUnion[
75
JavaScript
printUnion[
76
#include
6void
26 printUnion[
79
#include
6#include
5
using
2printUnion[
83 #include
8
using
2using
0 using
1
using
5using
3 using
4
using
5namespace
0 using
3 namespace
2
using
5namespace
0 using
3 namespace
2
using
21int
00using
7using
24
using
5namespace
0 #include
5
using
21int
00using
7using
24
using
21std;
5
using
5std;
7
using
2std;
7
using
2using
0 void
2
using
5printUnion[
92using
7using
24
using
2using
0 void
9
using
5int
00using
7using
24
using
2int
1 int
2
#include
6std;
7
#include
6using
67 #include
95 void
void
05
using
2int
void
16
using
2int
void
19
PHP
using
2arr1[],
9
int
49
void
26 printUnion[
void
28using
777____530void
31 O[m + n]
Auxiliary Space: O[1]
Xử lý các bản sao trong bất kỳ mảng nào: Mã trên không xử lý các bản sao trong bất kỳ mảng nào. Để xử lý các bản sao, chỉ cần kiểm tra mọi yếu tố cho dù các phần tử liền kề có bằng nhau không. & NBSP;Above code does not handle duplicates in any of the arrays. To handle the duplicates, just check for every element whether adjacent elements are equal.
Dưới đây là việc thực hiện phương pháp này. & NBSP;
C++
#include
using
namespace
std;
#include
95 void
int
56__
int
63int
int
65
#include
5
#include
6int
int
69
#include
6int
int
72
#include
6int
int
75
#include
6using
3 int
78
using
2int
80
#include
6namespace
0
using
2int
84
#include
6int
int
87
#include
6int
89int
90int
7int
92
#include
6int
94using
7using
8
#include
6int
98
#include
6arr1[],
00 #include
17int
arr1[],
03
using
2using
3 arr1[],
06
using
5arr1[],
08using
7using
8
using
5arr1[],
12
using
2std;
7
#include
6std;
7
#include
6arr1[],
00 #include
17int
arr1[],
21
using
2using
3 arr1[],
24
using
5arr1[],
26using
7using
8
using
5arr1[],
30
using
2std;
7
#include
6std;
7
std;
7
int
printUnion[
6
#include
5
#include
6int
arr1[],
41
#include
6int
arr1[],
44
#include
6int
arr1[],
3int
7int
8int
77____80
#include
6int
int
6int
7 ____85int
77 ____87
#include
6arr1[],
60
#include
6int
1 int
2
std;
7
C
int
4
arr1[],
66
#include
95 void
int
56__
int
63int
int
65
#include
5
#include
6int
int
69
#include
6int
int
72
#include
6int
int
75
#include
6using
3 int
78
using
2int
80
#include
6namespace
0
using
2int
84
#include
6int
int
87
#include
6int
94using
7using
8
using
2int
07
#include
6#include
16#include
17int
11int
12
#include
6int
98
#include
6arr1[],
00 #include
17int
arr1[],
03
using
2using
3 arr1[],
06
using
5#include
16#include
17int
11int
27
using
5arr1[],
12
using
2std;
7
#include
6std;
7
#include
6arr1[],
00 #include
17int
arr1[],
21
using
2using
3 arr1[],
24
using
5#include
16#include
17int
11int
46
using
5arr1[],
30
using
2std;
7
#include
6std;
7
std;
7
int
printUnion[
6
#include
5
#include
6int
arr1[],
41
#include
6int
arr1[],
44
#include
6int
arr1[],
3int
7int
8int
77____80
#include
6int
int
6int
7 ____85int
77 ____87
#include
6arr1[],
60
#include
6int
1 int
2
std;
7
C
#include
6arr1[],
00 #include
17int
int
05
Java
#include
92 #include
93
#include
6#include
5
#include
6#include
95 void
int
56int
int
90
int
91int
int
93
using
2int
int
98using
76#include
000
using
2int
#include
003using
76#include
000
using
5int
80
using
2std;
7
using
2namespace
0
using
5int
84
using
2int
#include
008using
11using
8
using
2#include
031using
11#include
033using
7using
24
using
2#include
037using
11#include
039
using
2using
3 #include
013
using
2int
#include
024#include
025 int
#include
027using
76#include
000
using
21#include
053using
7using
24
using
21arr1[],
12
using
5std;
7
using
2std;
7
using
2arr1[],
00 #include
17int
using
10using
76#include
046
using
5using
3 #include
049using
76#include
051
using
2arr1[],
00 #include
17int
#include
066using
11#include
068
using
21arr1[],
30
using
5std;
7
using
2std;
7
#include
6std;
7
using
5using
3 #include
071using
11#include
073
#include
6#include
5
using
21#include
075using
7using
24
#include
6using
67 #include
95 void
using
70
using
2#include
118
#include
6std;
7
std;
7
Python3
Các
Các
namespace
08 #include
123
#include
6std;
20namespace
12 std;
22std;
23
#include
6std;
24namespace
12 std;
22std;
27
#include
6namespace
31namespace
12 using
11
#include
6namespace
59namespace
12 using
11
using
2using
3 namespace
23
using
5using
3 #include
156namespace
12 #include
158
using
21namespace
25#include
161namespace
12#include
163namespace
29
using
21#include
143namespace
12 #include
168
using
5namespace
31namespace
32namespace
12 using
76
using
2namespace
36 #include
176
using
5using
3 #include
179namespace
12 #include
158
using
21namespace
25#include
184namespace
12#include
163namespace
29
using
21#include
143namespace
12 #include
191
using
5namespace
59namespace
32namespace
12 using
76
using
2namespace
0namespace
51
using
5using
3 #include
156namespace
12 #include
158
using
21namespace
25#include
161namespace
12#include
163namespace
29
using
21#include
143namespace
12 #include
168
using
5namespace
31namespace
32namespace
12 using
76
using
5namespace
59namespace
32namespace
12 using
76
using
5namespace
31namespace
32namespace
12 using
76
#include
6using
0 namespace
70
using
5namespace
25#include
161namespace
12#include
163namespace
29
using
2using
3 #include
156namespace
12 #include
158
using
5#include
143namespace
12 #include
168
using
2namespace
31namespace
32namespace
12 using
76
#include
6using
0 namespace
20
using
5namespace
25#include
184namespace
12#include
163namespace
29
using
2using
3 #include
179namespace
12 #include
158
using
5#include
143namespace
12 #include
191
using
2namespace
59namespace
32namespace
12 using
76
using
3 #include
272namespace
12namespace
12 #include
275namespace
51
#include
6namespace
96namespace
12 namespace
98using
76__
#include
6#include
304
C#
#include
6std;
09namespace
12 namespace
98using
78using
77__
using
std;
30
#include
92 std;
32
int
91int
#include
317
#include
6#include
5
#include
6#include
95 void
int
56int
std;
38
using
2int
#include
322
using
2int
#include
325
using
2int
int
75
using
5int
80
using
2namespace
0
using
5int
84
using
2using
3 int
78
using
2#include
345using
7using
24
using
2int
98
using
2int
#include
340____1025 int
#include
343
using
2arr1[],
00 #include
17int
#include
354
using
21#include
359using
7using
24
using
21arr1[],
12
using
5std;
7
using
2std;
7
using
5using
3 arr1[],
06
using
2arr1[],
00 #include
17int
#include
372
using
21#include
377using
7using
24
using
21arr1[],
30
using
5std;
7
using
2std;
7
#include
6std;
7
using
5using
3 arr1[],
24
#include
6#include
5
using
2int
#include
397
using
2int
#include
400
using
2#include
118
#include
6std;
7
std;
7
#include
6using
67 #include
95 void
void
05
printUnion[
76
JavaScript
#include
6void
26 #include
409
using
2printUnion[
83 #include
412
using
2printUnion[
83 #include
415
using
2printUnion[
83 int
75
using
5int
80
using
2#include
425namespace
0
using
5int
84
using
2using
3 #include
013
using
2#include
433using
7using
24
using
2#include
437
using
2printUnion[
83 #include
431
using
2arr1[],
00 #include
17int
#include
354
using
21#include
447using
7using
24
using
21#include
451
using
5std;
7
using
2std;
7
using
5using
3 arr1[],
06
using
2arr1[],
00 #include
17int
#include
372
using
21#include
465using
7using
24
using
21arr1[],
30
using
5std;
7
using
2std;
7
#include
6std;
7
using
5using
3 arr1[],
24
#include
6using
67 #include
95 void
void
05
using
2#include
118
int
49
JavaScript O[l1 + l2]
Auxiliary Space: O[n]
#include
6void
26 #include
409Sanjay Kumar for suggesting this solution.
using
2printUnion[
83 #include
412TreeSet in Java: The idea of the approach is to build a TreeSet and insert all the elements from both arrays into it. As a tree set stores only unique values, it will only keep all the unique values of both arrays.
using
2printUnion[
83 #include
415
using
2printUnion[
83 int
75
using
2using
3 #include
013
using
2printUnion[
83 #include
431
using
std;
30
#include
92 std;
32
#include
6#include
95 void
int
56int
std;
38
using
2int
#include
322
#include
6#include
5
using
2int
#include
325
using
2int
int
75
using
5#include
518
using
2using
3 int
78
using
5#include
518
using
2#include
527
using
5printUnion[
51#include
025 #include
531
using
2arr1[],
00 #include
17int
#include
536
using
5#include
538
using
2int
1 #include
541
#include
6std;
7
#include
6using
67 #include
95 void
#include
548
#include
6#include
5
Các
Các
using
2int
#include
581
using
2int
#include
584
using
2#include
586
using
5#include
588
using
2arr1[],
00 #include
17int
#include
593
using
5#include
595using
7using
24
using
2std;
7
#include
6std;
7
std;
7
Độ phức tạp về thời gian: O [m + n] trong đó 'm' và 'n' là kích thước của không gian mảng ] Thời gian thêm n phần tử sẽ mất [nlogn] O[m + n] where ‘m’ and ‘n’ are the size of the arrays
Auxiliary Space: O[m*log[m]+n*log[n]] because adding element into TreeSet takes O[logn] time adding n elements will take [nlogn]
Cảm ơn Arava Sai Teja đã đề xuất giải pháp này.Arava Sai Teja for suggesting this solution.
Một cách tiếp cận khác sử dụng Hashmap trong Java: Ý tưởng về phương pháp này là xây dựng một hashmap và chèn tất cả các yếu tố. & nbsp; như một hashmap có độ phức tạp của O [1] để chèn và tra cứu.HashMap in Java: The idea of the approach is to build a HashMap and insert all the elements. As a HashMap has the complexity of O[1] for insertion and lookup.
Dưới đây là việc thực hiện phương pháp này.
Java
#include
485 #include
486
#include
485 #include
488
#include
485 #include
608
#include
92 std;
32
#include
6using
67 #include
95 #include
494
#include
6#include
496int
arr1[],
int
#include
500
#include
501int
#include
503int
#include
505
#include
6#include
5
using
2#include
629#include
025 #include
631
using
2arr1[],
00 #include
17int
#include
636using
11#include
638
using
2#include
5
using
5using
3#include
643
using
5#include
5
using
21#include
647using
76using
24
using
5std;
7
using
5namespace
0
using
5#include
5
using
21#include
657using
76using
24
using
5std;
7
using
2std;
7
using
2arr1[],
00 #include
17int
#include
636using
11#include
670
using
2#include
5
using
5using
3#include
675
using
5#include
5
using
21#include
679using
76using
24
using
5std;
7
using
5namespace
0
using
5#include
5
using
21#include
689using
76using
24
using
5std;
7
using
2std;
7
using
2#include
697#include
025 #include
531
using
2arr1[],
00 #include
17int
#include
704
using
2#include
5
using
5#include
708
using
2std;
7
using
2int
1 #include
541
#include
6std;
7
#include
6using
67 #include
95 void
#include
548
#include
6#include
5
Các
Các
using
2int
#include
581
using
2int
#include
584
#include
757#include
758#include
759using
24
using
2#include
586
using
5#include
588
using
2arr1[],
00 #include
17int
#include
593
Độ phức tạp về thời gian: O [m + n] trong đó 'm' và 'n' là kích thước của không gian mảng ] Thời gian thêm n phần tử sẽ mất [nlogn]
using
2std;
7
#include
6std;
7
std;
7
C#
Cảm ơn Arava Sai Teja đã đề xuất giải pháp này.
Một cách tiếp cận khác sử dụng Hashmap trong Java: Ý tưởng về phương pháp này là xây dựng một hashmap và chèn tất cả các yếu tố. & nbsp; như một hashmap có độ phức tạp của O [1] để chèn và tra cứu.
Dưới đây là việc thực hiện phương pháp này.
Java
#include
485 #include
486
#include
485 #include
488
#include
788#include
5
#include
6#include
805int
using
77int
#include
809
#include
485 #include
608
#include
92 std;
32
#include
6using
67 #include
95 #include
494
using
2#include
827
#include
810std;
7
#include
6#include
496int
arr1[],
int
#include
500
using
2#include
834
#include
810std;
7
#include
6std;
7
#include
501int
#include
503int
#include
505
using
2#include
629#include
025 #include
631
using
2#include
848
#include
810std;
7
#include
6#include
496int
arr1[],
int
#include
500
using
2#include
855
#include
810std;
7
#include
6std;
7
#include
501int
#include
503int
#include
505
using
2#include
629#include
025 #include
631
using
2arr1[],
00 #include
17int
#include
636using
11#include
638
#include
788std;
7
using
2arr1[],
00 #include
17int
#include
636using
11#include
670
#include
788#include
5
#include
6int
#include
397
#include
6int
#include
888
using
2#include
5
#include
6int
#include
894
#include
6#include
896#include
759using
24
#include
6#include
900
#include
6#include
865#include
17int
namespace
31#include
869 #include
907using
7__
#include
788std;
7
std;
7
Đầu ra
Union is : 1 2 3 4 5
Độ phức tạp về thời gian: O [M + N] trong đó ’m, và’ n, là kích thước của không gian arrayauxiliary: O [M + N] O[m + n] where ‘m’ and ‘n’ are the size of the arrays
Auxiliary Space: O[m + n]
Cảm ơn Aarti Rathi đã đề xuất giải pháp này.Aarti Rathi for suggesting this solution.
Một cách tiếp cận được tối ưu hóa khác: Trong mã trên, chúng tôi sử dụng một số không gian phụ trợ bổ sung bằng cách tạo Newtable []. Chúng ta có thể giảm chương trình độ phức tạp không gian để kiểm tra hàm trên thành hằng số bằng cách kiểm tra các phần tử liền kề khi tăng I hoặc J sao cho I hoặc J trực tiếp chuyển sang phần tử khác biệt tiếp theo. Chúng ta có thể thực hiện thao tác này tại chỗ [tức là mà không cần sử dụng bất kỳ không gian bổ sung nào].: In the above code we use some extra auxiliary space by creating newtable[ ]. We can reduce the space complexity program to test the above function to constant by checking adjacent elements when incrementing i or j such that i or j directly move to the next distinct element. We can perform this operation in place [i.e. without using any extra space].
C++
#include
using
namespace
std;
void
#include
918__
#include
5
#include
6#include
927
#include
6#include
5
using
2#include
931
#include
6#include
425using
0 #include
935
std;
7
void
#include
938int
#include
940int
#include
942
#include
5
#include
6int
#include
8
#include
6using
0 #include
949
#include
6#include
5
using
2using
3 using
4
using
2#include
5
using
5arr1[],
08using
7using
8
using
5#include
962
using
2std;
7
using
2namespace
0 using
3 #include
968
using
2#include
5
using
5arr1[],
26using
7using
8
using
5#include
976
using
2std;
7
using
2namespace
0
using
2#include
5
using
5arr1[],
08using
7using
8
using
5#include
962
using
5#include
976
using
2std;
7
#include
6std;
7
#include
6using
0 #include
997
#include
6#include
5
using
2arr1[],
08using
7using
8
using
2#include
962
#include
6std;
7
#include
6using
0 using
010
#include
6#include
5
using
2arr1[],
26using
7using
8
using
2#include
976
#include
6std;
7
std;
7
int
printUnion[
6
#include
5
#include
6#include
920int
using
028
#include
6#include
920int
using
032
#include
6using
034
#include
6int
1 int
2
std;
7
Độ phức tạp về thời gian: & nbsp; & nbsp; trong đó m & n là kích thước của các mảng.AUXILIARITY Không gian: & nbsp;
Auxiliary Space:
Giao điểm của mảng ARR1 [] và ARR2 []
Để tìm giao điểm của 2 mảng được sắp xếp, hãy làm theo cách tiếp cận dưới đây: & nbsp;
1] Sử dụng hai biến chỉ mục I và J, giá trị ban đầu I = 0, j = 0 & nbsp; 2] Nếu ARR1 [i] nhỏ hơn ARR2 [J] thì tăng I. & NBSP; 3] nếu ARR1 [i] ARR2 [J] sau đó tăng J. & NBSP; 4] Nếu cả hai đều giống nhau thì in bất kỳ trong số chúng và tăng cả I và J.
2] If arr1[i] is smaller than arr2[j] then increment i.
3] If arr1[i] is greater than arr2[j] then increment j.
4] If both are same then print any of them and increment both i and j.
Dưới đây là việc thực hiện phương pháp trên:
C++
#include
using
namespace
std;
void
#include
918__
#include
5
#include
6int
#include
8
#include
6using
0 #include
949
using
2using
3 using
4
using
5std;
5
using
2namespace
0 using
3 #include
968
using
5using
070
using
2namespace
0
using
2#include
5
using
5arr1[],
26using
7using
8
using
5std;
5
using
5using
070
using
2std;
7
#include
6std;
7
std;
7
int
printUnion[
6
#include
5
#include
6int
1 int
2
Độ phức tạp về thời gian: & nbsp; & nbsp; trong đó m & n là kích thước của các mảng.AUXILIARITY Không gian: & nbsp;
Giao điểm của mảng ARR1 [] và ARR2 []
Để tìm giao điểm của 2 mảng được sắp xếp, hãy làm theo cách tiếp cận dưới đây: & nbsp;
#include
6using
112
#include
6int
1 int
2
std;
7
Độ phức tạp về thời gian: & nbsp; & nbsp; trong đó m & n là kích thước của các mảng.AUXILIARITY Không gian: & nbsp;
int
4
void
#include
918__
#include
5
#include
6int
#include
8
#include
6using
0 #include
949
using
2using
3 using
4
using
5std;
5
using
2namespace
0 using
3 #include
968
using
5using
070
using
2namespace
0
using
2std;
7
using
5#include
16#include
17#include
18#include
28
using
5std;
5
using
2std;
7
#include
6std;
7
std;
7
int
printUnion[
6
#include
5
#include
6int
1 int
2
Độ phức tạp về thời gian: & nbsp; & nbsp; trong đó m & n là kích thước của các mảng.AUXILIARITY Không gian: & nbsp;
Giao điểm của mảng ARR1 [] và ARR2 []
Để tìm giao điểm của 2 mảng được sắp xếp, hãy làm theo cách tiếp cận dưới đây: & nbsp;
#include
6using
112
#include
6#include
86#include
87
#include
6int
1 int
2
std;
7
Độ phức tạp về thời gian: & nbsp; & nbsp; trong đó m & n là kích thước của các mảng.AUXILIARITY Không gian: & nbsp;
Giao điểm của mảng ARR1 [] và ARR2 []
Để tìm giao điểm của 2 mảng được sắp xếp, hãy làm theo cách tiếp cận dưới đây: & nbsp;
#include
6#include
5
1] Sử dụng hai biến chỉ mục I và J, giá trị ban đầu I = 0, j = 0 & nbsp; 2] Nếu ARR1 [i] nhỏ hơn ARR2 [J] thì tăng I. & NBSP; 3] nếu ARR1 [i] ARR2 [J] sau đó tăng J. & NBSP; 4] Nếu cả hai đều giống nhau thì in bất kỳ trong số chúng và tăng cả I và J.
Dưới đây là việc thực hiện phương pháp trên:
void
using
044int
arr1[],
int
using
21std;
5
using
5namespace
0 using
3 namespace
2
using
21using
070
using
5namespace
0 #include
5
using
21using
30using
7using
24
using
21std;
5
using
5std;
7
using
2std;
7
#include
6std;
7
#include
6using
67 #include
95 void
using
70
#include
6#include
5
Các
Các
using
2int
using
99
using
2int
namespace
02
using
2using
112
#include
6std;
7
std;
7
Python3
namespace
08 using
289
#include
6namespace
11namespace
12 using
11using
777____211
#include
6using
0 namespace
18namespace
19 namespace
20
using
2using
3 namespace
23
using
5namespace
31namespace
32namespace
12 using
76
using
2namespace
36 namespace
37
using
5namespace
45namespace
32namespace
12 using
76
using
2namespace
0namespace
51
using
5namespace
25namespace
40namespace
12using
7namespace
29
using
5namespace
59namespace
32namespace
12 using
76
using
5namespace
31namespace
32namespace
12 using
76
using
2namespace
36 namespace
37
using
5namespace
45namespace
32namespace
12 using
76
using
5namespace
59namespace
32namespace
12 using
76
Các
using
368
C#
std;
09namespace
12 namespace
98using
78__
std;
20namespace
12 std;
22223
std;
24namespace
12 std;
22____std;
27
using
std;
30
#include
6#include
5
#include
92 std;
32
#include
6#include
95 void
using
044int
std;
38
using
379int
std;
41int
#include
2int
#include
4
using
21std;
5
using
5namespace
0 using
3 namespace
2
using
21using
070
using
5namespace
0 #include
5
using
21std;
66using
7using
24
using
21std;
5
using
5std;
7
using
2std;
7
#include
6std;
7
using
2int
#include
8
#include
6#include
5
using
2int
void
10
using
2using
0 using
1
using
5using
3 using
4
#include
6using
67 #include
95 void
void
05
using
2using
112
#include
6std;
7
std;
7
using
2int
void
13
void
25
using
2int
void
16
using
451void
33using
77void
35namespace
29
#include
5
using
2int
void
19
PHP
void
26 using
044void
28using
77void
30void
31
#include
6#include
5
#include
6void
39 using
459
using
5void
39printUnion[
12
#include
6void
41 void
42
using
5void
41printUnion[
12
using
2namespace
0
using
2#include
5
#include
6using
0 #include
17void
39 void
47void
33
using
5void
39printUnion[
12
using
5void
41printUnion[
12
using
2std;
7
#include
6std;
7
std;
7
using
2using
3 #include
17void
28namespace
98void
39void
62void
30namespace
98void
41void
66
using
2namespace
0 using
3 #include
17void
30namespace
98void
41void
62 ____528namespace
98void
39void
66
using
5void
68 void
30namespace
98void
41using
514using
7using
8
void
28 printUnion[
51printUnion[
522printUnion[
53
using
044void
28using
77void
30using
77void
33using
77void
35using
24
printUnion[
75
void
30 printUnion[
51printUnion[
522printUnion[
57
printUnion[
76
void
33 printUnion[
51using
538#include
17void
28using
24
#include
5
void
35 printUnion[
51using
538#include
17void
30using
24
JavaScript
#include
6#include
5
void
26 using
368
using
5std;
5
#include
6printUnion[
83 #include
8
using
5using
070
using
2namespace
0
using
2#include
5
using
5int
00using
7using
24
using
5std;
5
using
2std;
7
#include
6std;
7
std;
7
#include
6using
0 using
567
using
2using
3 using
4
using
2namespace
0 using
3 namespace
2
printUnion[
83 int
37
using
112
int
49
printUnion[
83 int
40 O[m + n]
Auxiliary
Space: O[1]
printUnion[
83 using
99
The above code does not handle duplicate elements in arrays. The intersection should not count duplicate elements. To handle duplicates just check whether the current element is already present in the intersection list. Below is the implementation of this approach.
C++
#include
using
namespace
std;
void
using
611int
arr1[],
int
#include
5
#include
6int
#include
8
#include
6using
625int
using
627
#include
6using
0 using
1
using
2using
3 using
4
using
5std;
5
using
2namespace
0 using
3 namespace
2
using
5using
070
using
2namespace
0
using
2#include
5
using
5using
647
using
5std;
5
using
5using
070
using
2std;
7
#include
6std;
7
#include
6arr1[],
00#include
17using
659 using
660
#include
6#include
5
using
2using
664using
7using
8
using
2std;
7
std;
7
int
printUnion[
6
#include
5
#include
6int
using
675
#include
6int
using
678
#include
6int
int
6__777778 ____77778080
‘
#include
6using
694
#include
6int
1 int
2
std;
7
Java
#include
485 #include
486
#include
485 #include
488
#include
92 using
704
#include
6#include
95 void
using
611int
arr1[],
int
#include
500
using
713int
#include
2int
#include
4
#include
6#include
5
using
2using
721#include
025 using
723
using
2int
using
10using
11using
12using
11using
8
using
2using
0 using
1
using
5using
3 using
4
using
21std;
5
using
5namespace
0 using
3 namespace
2
using
21using
070
using
5namespace
0 #include
5
using
21using
749
using
21std;
5
using
5std;
7
using
2std;
7
using
2arr1[],
00 #include
17int
using
760
using
761using
762
using
2#include
5
using
5using
766using
7using
24
using
2std;
7
using
2#include
758using
773using
24
#include
6std;
7
#include
6using
67 #include
95 void
using
70
#include
6#include
5
Các
Các
using
2int
using
99
using
2int
namespace
02
using
2using
694
#include
6std;
7
std;
7
Python3
namespace
08 using
824
#include
6using
826namespace
12 using
828
#include
6namespace
31namespace
12 namespace
59namespace
12 using
11
#include
6using
0 using
837namespace
19 using
839
using
2using
3 using
842namespace
12namespace
12 using
845
using
5using
3 std;
22using
849__
using
21using
860namespace
32namespace
12 using
76
using
21namespace
45namespace
32namespace
12 using
76
using
5namespace
0namespace
51
using
21using
873
using
21using
860namespace
32namespace
12 using
76
using
21namespace
45namespace
32namespace
12 using
76
using
2namespace
36 using
886
using
5using
860namespace
32namespace
12 using
76
using
2namespace
0namespace
51
using
5namespace
45namespace
32namespace
12 using
76
#include
6using
3 using
902 std;
22using
904
using
2int
1 namespace
98using
853using
76std;
08
#include
6int
1 using
913
using
3 #include
272namespace
12namespace
12 #include
275namespace
51
#include
6namespace
96namespace
12 namespace
98using
76__
#include
6std;
09namespace
12 namespace
98using
78__
#include
6using
951namespace
12 using
953std;
22229555______42222
#include
6namespace
25#include
17using
961using
962
C#
using
std;
30
using
#include
784
#include
92 std;
32
#include
6#include
95 void
using
611int
using
974int
using
976__
#include
6#include
5
using
2int
#include
8
Các
using
2using
0 using
1
using
5using
3 using
4
using
21std;
5
using
5namespace
0 using
3 namespace
2
using
21using
070
using
5namespace
0
using
5#include
5
using
21namespace
013
using
21std;
5
using
21using
070
using
5std;
7
using
2std;
7
using
2#include
865#include
17int
namespace
026#include
869 namespace
028
using
2#include
5
using
5namespace
032using
7using
24
using
2std;
7
#include
6std;
7
#include
6using
67 #include
95 void
void
05
#include
6#include
5
using
2int
namespace
048
using
2int
namespace
051
using
2int
void
16
using
2int
void
19
using
2using
694
#include
6std;
7
std;
7
JavaScript
printUnion[
76
void
26 namespace
065
#include
6namespace
067
#include
6namespace
069
#include
6using
0namespace
072
using
2using
3namespace
075
using
5using
3namespace
078
using
21namespace
080
using
21namespace
082
using
5std;
7
using
5namespace
0#include
5
using
21namespace
089
using
21namespace
080
using
21namespace
082
using
5std;
7
using
2std;
7
using
2namespace
0 using
3namespace
101
using
5namespace
080
using
2namespace
0
using
5namespace
082
#include
6std;
7
#include
6using
3namespace
112
using
2int
1 namespace
115
#include
6int
1 using
913
std;
7
namespace
120
namespace
121
namespace
122
namespace
123
int
49
Độ phức tạp về thời gian: O [M + N] & NBSP; Không gian phụ trợ: O [Min [M, N]] O[m + n]
Auxiliary Space : O[min[m, n]]
Một cách tiếp cận khác sử dụng bộ cây: Ý tưởng về phương pháp này là xây dựng một cây được đặt để lưu trữ các yếu tố duy nhất của ARRI []. Sau đó so sánh các phần tử ARR2 [] với bộ cây và cũng kiểm tra xem điều đó có được xem xét trong giao điểm để tránh trùng lặp không. The idea of this approach is to build a tree set to store the unique elements of arri[]. Then compare the elements arr2[] with the tree set and also check if that is considered in the intersection to avoid duplicates.
Dưới đây là việc thực hiện phương pháp này.
Java
#include
485 #include
486
#include
485 #include
488
#include
92 std;
32
#include
6using
67 #include
95 #include
494
#include
6namespace
136int
arr1[],
int
#include
500
namespace
141int
#include
503int
#include
505
#include
6#include
5
using
2#include
509#include
025 #include
511
using
2arr1[],
00 #include
17int
#include
516
using
5#include
518
using
2#include
527
using
5printUnion[
51#include
025 #include
531
using
2arr1[],
00 #include
17int
#include
523
using
5using
3 namespace
172
using
21namespace
174
using
21#include
538
using
2namespace
178
using
2int
1 #include
541
#include
6std;
7
#include
6using
67 #include
95 void
#include
548
#include
6#include
5
Các
Các
using
2int
#include
581
using
2int
#include
584
using
2namespace
222
using
5namespace
224
using
2arr1[],
00 #include
17int
namespace
229
using
5#include
595using
7using
24
using
2std;
7
#include
6std;
7
std;
7
Độ phức tạp về thời gian: O [M+N] Không gian phụ trợ: O [M+N] O[m+n]
Auxiliary Space: O[m+n]
Cảm ơn Arava Sai Teja đã đề xuất giải pháp này. & NBSP;Arava Sai Teja for suggesting this solution.
Một cách tiếp cận khác hữu ích khi sự khác biệt giữa kích thước của hai mảng đã cho là đáng kể. & Nbsp; ý tưởng được lặp lại thông qua mảng ngắn hơn và thực hiện tìm kiếm nhị phân cho mọi yếu tố của mảng ngắn trong mảng lớn [lưu ý rằng mảng được sắp xếp]. Độ phức tạp về thời gian của giải pháp này là O [Min [MLOGN, NLOGM]]. Giải pháp này hoạt động tốt hơn cách tiếp cận trên khi tỷ lệ chiều dài lớn hơn so với nhỏ hơn là thứ tự logarit.
The idea is to iterate through the shorter array and do a
binary search for every element of short array in big array [note that arrays are sorted]. Time complexity of this solution is O[min[mLogn, nLogm]]. This solution works better than the above approach when ratio of larger length to smaller is more than logarithmic order.
Xem bài đăng sau để biết các mảng chưa được phân loại. & NBSP; Tìm liên minh và giao điểm của hai mảng chưa được phân loại viết nhận xét viết nếu bạn tìm thấy bất kỳ lỗi nào trong các mã/thuật toán trên hoặc tìm các cách khác để giải quyết cùng một vấn đề. & NBSP;
Find Union and Intersection of two unsorted arrays
Please write comments if you find any bug in above
codes/algorithms, or find other ways to solve the same problem.