1. 程式人生 > >劍指offer程式設計題(JAVA實現)——第35題:陣列中的逆序對

劍指offer程式設計題(JAVA實現)——第35題:陣列中的逆序對



github https://github.com/JasonZhangCauc/JZOffer
  • 劍指offer程式設計題(JAVA實現)——第35題:陣列中的逆序對
  • 題目描述
    在陣列中的兩個數字,如果前面一個數字大於後面的數字,則這兩個數字組成一個逆序對。
    輸入一個數組,求出這個陣列中的逆序對的總數P。並將P對1000000007取模的結果輸出。
    即輸出P%1000000007
  • 輸入描述:
    題目保證輸入的陣列中沒有的相同的數字
  • 資料範圍:
    對於%50的資料,size<=10^4
    對於%75的資料,size<=10^5
    對於%100的資料,size<=2*10^5
  • 示例1
    輸入
    1,2,3,4,5,6,7,0
    輸出
    7
public class Test35 {
	//牛客網這道題的測試程式有問題,以至於這麼寫通不過
	public static void main(String[] args) {
		int[] array = { 1, 2, 3, 4, 5, 6, 7, 0 };
		System.out.println(InversePairs(array));
		int[] array2 = { 364, 637, 341, 406, 747, 995, 234, 971, 571, 219, 993, 407, 416, 366
, 315, 301, 601, 650, 418, 355, 460, 505, 360, 965, 516, 648, 727, 667, 465, 849, 455, 181, 486, 149, 588, 233, 144, 174, 557, 67, 746, 550, 474, 162, 268, 142, 463, 221, 882, 576, 604, 739, 288, 569, 256, 936, 275, 401, 497, 82, 935, 983, 583, 523, 697, 478, 147, 795, 380, 973, 958, 115, 773, 870,
259, 655, 446, 863, 735, 784, 3, 671, 433, 630, 425, 930, 64, 266, 235, 187, 284, 665, 874, 80, 45, 848, 38, 811, 267, 575 }; int sysarray2 = InversePairs(array2); System.out.println(sysarray2);// 2519 int[] array3 = { 627126, 415347, 850134, 371085, 279048, 705820, 453064, 944751, 92317, 58592, 167988, 284065, 992573, 78043, 190215, 104546, 607528, 391775, 701214, 849731, 231053, 603058, 975374, 199773, 479544, 143961, 206797, 325662, 90035, 69615, 429916, 717161, 484962, 796403, 604598, 280362, 502223, 57662, 741466, 594540, 632606, 909454, 394957, 625180, 503849, 585172, 729726, 627729, 976947, 947293, 477461, 724352, 66703, 452835, 440478, 62599, 596797, 163627, 388261, 203184, 233243, 334529, 436697, 234557, 647284, 41295, 514920, 665859, 615310, 256386, 776752, 247916, 682192, 171709, 389448, 186041, 273234, 635527, 813771, 766533, 582820, 807584, 490886, 649523, 260419, 447716, 228474, 373568, 611343, 616735, 576752, 844586, 467616, 529801, 595496, 631253, 571097, 110416, 297112, 186407, 883154, 73864, 950675, 81698, 245574, 340124, 267739, 35160, 975651, 597862, 801693, 74823, 921798, 292579, 240698, 182218, 256647, 469172, 72138, 867991, 602259, 165243, 228929, 69875, 695044, 824425, 701128, 782493, 451193, 998241, 485252, 334347, 588457, 435928, 416045, 350383, 292404, 200137, 385543, 268055, 314351, 187237, 859230, 236150, 996168, 99928, 934720, 252816, 569100, 523210, 120807, 171359, 688453, 866088, 757586, 383498, 206866, 458715, 682343, 658059, 973308, 167596, 508759, 78117, 603524, 441156, 428501, 412280, 157645, 814044, 196687, 471997, 1281, 55917, 224499, 997450, 155845, 159219, 250266, 241297, 682429, 887425, 412656, 887235, 269865, 686594, 787085, 476731, 661661, 469428, 134791, 634969, 637024, 643550, 229439, 756900, 601058, 657940, 169180, 758704, 471984, 365867, 230701, 473266, 421784, 455200, 470716, 93981, 130771, 237334, 335278, 329552, 641111, 264286, 733139, 910976, 950881, 520224, 904060, 612542, 989653, 38851, 763864, 143029, 198753, 993303, 899930, 799811, 651243, 585462, 558515, 639579, 951330, 305568, 112845, 889466, 277120, 99913, 499800, 924243, 853599, 835078, 770148, 11062, 615717, 503287, 922039, 82950, 23512, 826099, 695492, 529517, 381302, 975708, 672546, 96407, 485363, 88828, 896218, 652958, 674291, 971086, 292538, 141973, 276654, 921735, 547791, 70127, 21649, 47591, 994370, 391600, 399022, 764518, 402663, 14739, 267806, 841054, 97689, 807670, 183505, 309533, 337187, 564807, 801594, 9733, 661214, 803309, 614914, 73784, 456268, 805557, 44870, 265158, 947530, 837877, 703245, 11673, 908004, 241246, 59265, 418726, 632847, 974639, 183245, 35510, 505730, 967403, 392916, 603419, 775073, 576421, 429304, 112260, 141228, 747250, 638345, 318794, 550560, 769611, 392578, 523180, 575168, 953801, 304690, 39050, 308030, 7935, 50724, 216034, 249182, 626341, 151112, 882029, 600980, 334357, 433891, 106710, 818112, 826807, 226481, 593185, 919580, 172137, 221797, 60808, 919388, 376495, 895954, 986300, 146106, 804884, 509480, 237627, 275037, 814170, 276677, 583067, 338457, 327401, 315453, 587639, 953742, 466566, 986020, 71074, 317275, 936263, 694136, 135388, 763070, 920617, 728573, 682650, 92755, 466723, 259810, 528495, 843218, 672116, 514795, 505676, 477001, 24275, 259655, 752038, 354797, 536333, 335106, 693254, 380086, 166911, 797246, 850181, 633477, 783266, 921255, 950753, 719530, 615392, 86141, 998952, 52361, 331066, 197955, 661468, 797789, 974117, 189963, 157359, 646234, 704758, 179388, 639587, 245385, 439043, 907977, 116534, 491728, 759435, 809789, 871815, 926347, 123387, 721996, 559824, 423005, 159603, 510577, 142535, 774995, 113070, 657840, 343709, 444137, 372147, 5177, 758278, 346264, 195141, 915638, 508850, 416251, 611378, 664789, 661637, 50421, 572767, 294523, 58502, 332202, 620664, 930317, 258549, 744051, 652313, 818374, 167057, 811916, 845303, 825944, 103264, 474726, 483784, 446973, 918863, 855931, 968502, 677141, 718548, 163643, 109131, 743750, 96247, 720509, 408540, 274236, 287283, 981307, 568759, 862137, 313509, 189424, 792454, 88411, 933475, 961119, 423137, 616884, 773035, 268440, 442829, 392651, 743166, 442965, 839624, 178381, 815249, 324479, 371875, 533797, 488122, 481006, 793899, 100721, 717868, 202439, 374957, 521503, 183746, 943717, 383640, 13608, 133141, 692446, 618371, 582968, 653565, 41508, 716205, 942952, 826300, 159034, 335604, 85819, 118351, 691580, 780552, 933600, 16059, 152427, 983749, 20534, 149786, 777649, 121255, 384006, 980088, 496213, 421861, 680187, 956282, 321853, 210147, 605775, 14299, 828518, 188743, 667864, 386378, 904948, 610816, 212678, 580334, 462772, 814849, 698686, 154353, 595402, 148638, 170412, 747829, 132388, 190946, 897615, 910037, 828554, 797973, 406477, 324767, 219834, 603016, 281049, 541687, 813163, 886824, 555986, 158033, 591919, 740202, 60763, 13220, 867371, 789794, 109906, 330143, 604643, 324944, 484496, 200045, 473583, 171261, 464227, 605971, 878559, 878194, 32360, 707113, 676168, 438837, 31880, 896002, 41854, 829281, 954042, 371369, 232457, 510028, 45755, 340729, 766583, 106518, 353949, 633954, 896312, 463855, 964097, 17308, 788800, 448594, 733705, 262383, 619855, 714284, 384706, 498414, 592479, 417066, 721880, 784999, 855903, 753760, 197353, 414109, 99394, 151395, 301831, 848203, 177776, 347586, 188932, 944359, 970456, 542881, 578313, 383121, 523089, 58762, 400429, 828241, 507356, 134134, 606976, 643563, 848419, 991682, 658330, 957250, 408748, 380210, 258601,