Tìm hai số từ tổng của chúng và XOR LeetCode

47
2
47
2
47
29
47
30
47
31
47
32
47
31
47
34
47
31
47
36
47
37

47
2____02
47
40

47
2

47
2
47
43

47
44
47
45

_______09____5562

47
562

 

 

47
49

Python3




47
50

47
51

 

47
52

47
53

________ 054 ________ 055

47
9
47
57
47
58
47
580    
47
60

 

47
9
47
62

47
9
47
64

47
9
47
68
47
67_______068
47
69
47
69
47
580
47
72

47
2

47
2______368
47
76
47
68
47
69
47
79
47
80
47
09
47
72

47
7

47
7____057____058
47
57
47
80
47
89

47
7

47
9____5560
47
57

47
9

 

47
95

47
96
47
58
47
98
47
30
47
31
47
32____031
47
34
47
31
47
36
47
606

47
607
47
58
47
609
47
610

 

________ 3611 ________ 3612

 

 

 

47
613

C#




47
614

47
61

________ 562 ________ 3617

 

47
637
47
638

47
9

47
7

47
9
47
0

47
9
47
1

47
9
47
626
47
2
47
3
47
2
47
631
47
2
47
7

47
9
47
8

_______02____362

47
2
47
2
47
61

47
9

47
2____5584

47
2____5586

47
2______368
47
69____02
47
1

47
7____368
47
69____02
47
6

47
11
47
8

47
9

________ 02 ________ 5560 ________ 5561

_______09____5562

 

_______09____5563

47
9
47
22
47
626
47
24
47
670

47
9

47
2______02
47
674

47
2
47
2
47
677

47
2

47
2____3680

_______044____3682

_______09____5562

47
562

 

 

47
49

PHP




47
687

47
688

47
61

 

47
0

47
1

47
692
47
3____3694
47
31
47
696
47
697

47
8

47
9

_______09____362

47
9
47
03
47
04

 

47
9
47
06

47
9
47
08

47
9
47
66

47
9
47
68
47
69
47
14
47
04
47
14
47
17
47
696
47
581
47
14
47
21

47
2______368
47
69
47
25
47
58
47
14
47
28
47
25
47
17
47
696
47
581
47
25
47
21

47
7
47
03
47
37
47
694
47
98
47
14
47
41
47
694
47
98
47
25
47
45

 

47
9
47
560
47
03
47
581

47
562

 

47
9
47
52

47
9
47
694
47
58
47
56
47
57

47
9
47
696
47
58
47
61______369
47
694
47
64

47
9
47
66
47
3_______3694
47
31
47
696
47
71

 

47
72

JavaScript




47
73

47
9
47
75

_______09____561

 

47
9
47
0

47
9
47
1

47
9
47
83

47
2____085
47
62

 

47
2____364

_______02____366

47
2____368
47
93

47
7____368
47
96

47
11
47
8

 

________ 02 ________ 5560 ________ 5561

_______09____5562

 

_______09____5563

47
9____55607

47
9____55609

_______09____55611

 

_______09____55613

 

47
5614

47
5615

đầu ra

47

Giải pháp hiệu quả
Giải pháp hiệu quả có thể giải quyết vấn đề này trong thời gian O[n]. Giả định ở đây là các số nguyên được biểu diễn bằng 32 bit.
Giải pháp tối ưu sẽ là thử thao tác bit. Để thực hiện giải pháp, chúng tôi xem xét tất cả các bit là 1 và 0 và lưu trữ số lượng của chúng trong hai biến khác nhau. Tiếp theo bội số đó cùng với sức mạnh của 2 được nâng lên vị trí bit đó. Làm điều này cho tất cả các vị trí bit của các số. tổng của họ sẽ là câu trả lời của chúng tôi.
Tính năng này thực sự hoạt động như thế nào?

Ví dụ: nhìn vào bit ngoài cùng bên phải của tất cả các số trong mảng. Giả sử rằng một số có bit 0 tận cùng bên phải và b số có bit 1. Sau đó, trong số các cặp, a*b trong số chúng sẽ có 1 ở bit ngoài cùng bên phải của XOR. Điều này là do có a*b cách để chọn một số có bit 0 và một số có bit 1. Do đó, các bit này sẽ đóng góp a*b vào tổng số tất cả các XOR

Nói chung, khi nhìn vào bit thứ n [trong đó bit ngoài cùng bên phải là bit thứ 0], hãy đếm xem có bao nhiêu số có 0 [gọi đây là an] và bao nhiêu số có 1 [gọi đây là bn]. Đóng góp cho tổng cuối cùng sẽ là một*bn*pow[2,n]. Bạn cần làm điều này cho từng bit và tính tổng tất cả những đóng góp này lại với nhau

Điều này có thể được thực hiện trong thời gian O[kn], trong đó k là số bit trong các giá trị đã cho

47
6

CPP




47
5616

47
61

47
63

47
62
47
96
47
58

 

47
0

47
1

47
5624
47
5624
47
2
47
5627
47
2
47
5
47
2
47
7

47
8

47
9____55624
47
5624
47
2
47
5637

47
9
47
68
47
69______02
47
5642

47
9
47
8

47
2____55646

47
2
47
2
47
5649

47
2

47
2____55652

47
2____55624
47
5624
47
2
47
5657

47
2____368
47
69______02
47
5662

47
2____08

47
7____55666
47
5667

47
11____55669

47
7____55671

47
11____55673

47
7____55675

47
2____5562

47
2

47
2____55680

47
2____55682

 

47
2____55684

47
2____55686

_______09____5562

47
9
47
560
47
5691

47
562

 

47
2
47
565

47
8

47
9____55624
47
5624
47
2
47
5637

47
9
47
2
47
569

47
9
47
2
47
612____5613
47
614
47
613
47
616

_______09____56112

47
9____56114

47
9____5560
47
631

47
562

Java




47
6119

47
61

47
635
47
636

 

47
637
47
638

47
9

47
9
47
0

47
9
47
1

47
9
47
626
47
5624
47
5627
47
2
47
5
47
2
47
7

47
9
47
8

47
2____55624
47
6142____5580
47
581

47
2______368
47
69
47
2
47
01
47
580
47
6151
47
6152
47
6153

47
2____08

47
7____56157

47
7
47
2
47
6160____5580
47
6162
47
580
47
581

47
7

47
7____55652

47
7____55624
47
6170____5580
47
581

47
7

47
7
47
68
47
69
47
2
47
6178
47
580
47
10

47
7
47
8

47
11
47
5666
47
6185
47
6186
47
6187
47
580
47
697

47
6190____55669

47
6190

47
11____55671

47
6190____55673

47
11
47
6198
47
6186
47
581

47
7____5562

47
7

47
7____55680

47
7____56307
47
09
47
6309

47
9

47
7____56312

47
7____55686

47
2____5562

47
2____5560
47
5691

_______09____5562

47
9

47
9
47
52

47
9
47
22
47
626
47
24
47
6329

47
9
47
8

47
2____55624
47
6142____5580
47
581

47
2
47
2
47
29
47
30
47
31
47
32
47
31
47
34
47
31
47
36
47
37

47
2____02
47
40

47
2

47
2____56112

47
2____56355

_______09____5562

47
562

 

47
6359

Python3




47
6360

47
6361

 

47
52

47
53

47
54
47
6365

47
9

47
9
47
6368
47
58
47
580

47
9
47
68
47
67_______068
47
69____369
47
580
47
31
47
6152
47
6380

 

47
2____56382

47
2____56384____058
47
580

47
2____56388
47
58
47
580

47
6391

47
2____56393

47
2____56395____058
47
580

47
2______368
47
76
47
68
47
69
47
69
47
580
47
6205

47
7_______55666
47
6208____56209
47
6186
47
58
47
58
47
580
47
6380

47
11 ________ 56384
47
58 ________ 56384
47
80 _______ 009

47
11

47
7____55671____56224

47
11 ________ 56388
47
58 ________ 56388
47
80 _______ 009

47
7_______56232
47
58
47
2____56208
47
6236
47
6186
47
697

47
2

47
6391

47
2____56242

47
2______56395
47
58
47
6388
47
6247
47
6384
47
6247
47
69
47
09
47
6252

47
6253

47
2____56255

47
2____56368 ________ 058 ________ 56368 ________ 080 ________ 56261

47
9

47
9____5560
47
6368

 

 

 

47
6266

47
6368
47
58
47
580

47
96
47
58
47
6272
47
30
47
31
47
32
47
31
47
34
47
31
47
36
47
606

47
607
47
58
47
609
47
610

47
6368
47
58
47
6287

47
611
47
69____56368
47
697

 

47
6292

C#




47
6293

47
61

________ 562 ________ 3617

 

47
637
47
638

47
9

47
9
47
0

47
9
47
1

47
9
47
626
47
5624
47
5627
47
2
47
631
47
2
47
7

47
9
47
8

47
2____55624
47
5637

47
2______368
47
69______02
47
5642

47
2____08

47
7____56157

47
7
47
2
47
5649

47
7

47
7____55652

47
7____55624
47
5657

47
7

47
7____368
47
69____02
47
5662

47
7
47
8

47
11____55666
47
5667

47
6190____55669

47
6190

47
11____55671

47
6190____55673

47
11____55675

47
7____5562

47
7

47
7____55680

47
7____55682

47
9

47
7____56312

47
7____55686

47
2____5562

47
2____5560
47
5691

_______09____5562

47
9

47
9
47
52

47
9
47
22
47
626
47
24
47
9681

47
9
47
8

47
2____55624
47
5637

47
2______02
47
674

47
2
47
2
47
677

47
2

47
2____56112

47
2____59697

_______09____5562

47
562

 

47
5801

PHP




47
687

47
5803

47
61

 

47
0

47
1

47
692
47
5627____3694
47
31
47
696
47
697

47
8

47
9____55815
47
04

47
9
47
68
47
69
47
14
47
04
47
14
47
5823
47
14
47
21

47
9
47
8

47
2____56157

47
2____55831
47
04____55833
47
04

47
2

47
2____55837

47
2____55839

47
2_______55841
47
58____55833
47
6247____55831
47
5888
47
14
47
64

Chủ Đề