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

Show

    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