日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

剑指offer之【数组中的逆序对】

發(fā)布時間:2023/12/18 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 剑指offer之【数组中的逆序对】 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目:

  數(shù)組中的逆序?qū)?/p>

鏈接:

  https://www.nowcoder.com/practice/96bd6684e04a44eb80e6a68efc0ec6c5?tpId=13&tqId=11188&tPage=2&rp=2&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

題目描述:

  在數(shù)組中的兩個數(shù)字,如果前面一個數(shù)字大于后面的數(shù)字,則這兩個數(shù)字組成一個逆序?qū)Α]斎胍粋€數(shù)組,求出這個數(shù)組中的逆序?qū)Φ目倲?shù)P。并將P對1000000007取模的結(jié)果輸出。 即輸出P%1000000007?

思路:

  受歸并排序算法的啟發(fā),比較前后兩段數(shù)組的大小,并計算逆序數(shù);

代碼:

  

1 class Solution { 2 public: 3 int InversePairs(vector<int> data){ 4 int len = data.size(); 5 res =0; 6 if(len <= 0) 7 return 0; 8 vector<int> da = data; 9 MergeSort(data,da,0,len-1); 10 res = res%1000000007; 11 return res; 12 } 13 void MergeSort(vector<int> &data,vector<int> &data1, int l , int h){ 14 int mid; 15 if(l == h){ 16 data1[l] = data[l]; 17 } 18 else{ 19 mid = (l+h)/2; 20 MergeSort(data1,data,l,mid); 21 MergeSort(data1,data,mid+1,h); 22 Merge(data,data1,l,mid,h); 23 } 24 } 25 void Merge(vector<int> &data,vector<int> &data1, int l, int m, int h){ 26 int i,j,k; 27 for(i = l,j= m+1;i <= m && j<= h; ++l){ 28 if(data[i] < data[j]){ 29 data1[l] = data[i++]; 30 } 31 else{ 32 data1[l] = data[j++]; 33 res += (m-i+1); 34 res = res%1000000007; 35 } 36 } 37 if(i<=m){ 38 for(k=0;k<=m-i;++k){ 39 data1[l+k] = data[i+k]; 40 } 41 } 42 if(j <= h){ 43 for(k=0;k<= h-j;++k){ 44 data1[l+k] = data[j+k]; 45 } 46 } 47 } 48 private: 49 int res; 50 };

?

轉(zhuǎn)載于:https://www.cnblogs.com/wangshujing/p/6943440.html

總結(jié)

以上是生活随笔為你收集整理的剑指offer之【数组中的逆序对】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。