麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Java > 正文

java簡單實現數組中的逆序對

2024-07-14 08:43:57
字體:
來源:轉載
供稿:網友

題目描述:

在數組中的兩個數字,如果前面一個數字大于后面的數字,則這兩個數字組成一個逆序對。輸入一個數組,求出這個數組中的逆序對的總數P。并將P對1000000007取模的結果輸出。 即輸出P%1000000007

解題思路:

一開始一頭霧水,后面想到了使用歸并排序的思想,其實有多少個逆序對,就是歸并排序的時候,后面的數要超越前面多少個,嗯,好像不是很好說,要不然直接看代碼吧。還要注意,題目當中說要輸出取模的結果,這說明數據可能非常大,所以如果只是單純的在最后取模的話可能還是無法避免數據太大的影響,所以我們在每次更新count的時候就對其進行取模運算。

剛好又練習了一遍歸并排序,記錄一下

public class Solution {  int count;  public int InversePairs(int [] array) {    count = 0;    if(array != null){      divPairs(array, 0, array.length-1);    }    return count%1000000007;  }    public void divPairs(int[] array, int start, int end){    if(start >= end)      return;    int mid = (start + end)>>1;    divPairs(array, start, mid);    divPairs(array, mid+1, end);        mergePairs(array, start, mid, end);  }    public void mergePairs(int[] array, int start, int mid, int end){    int i = start, j = mid+1, k = 0;    int[] temp = new int[end-start+1];    while(i <= mid && j <= end){      if(array[i] <= array[j]){        temp[k++] = array[i++];      }else{        temp[k++] = array[j++];        count += mid - i + 1;        count %= 1000000007;      }    }    while(i <= mid){      temp[k++] = array[i++];    }    while(j <= end){      temp[k++] = array[j++];    }    for(int x = 0; x < temp.length; x++){      array[start+x] = temp[x];    }  }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产精品毛片va一区二区三区 | 主播粉嫩国产在线精品 | 成年免费网站 | 黄色影院在线观看视频 | xxxx hd video 69| 久久av喷吹av高潮av懂色 | 亚洲成人福利在线观看 | 欧美色大成网站www永久男同 | 国产午夜三级一区二区三桃花影视 | 超碰97最新| 国产精品久久久久久久久久iiiii | av电影直播 | chinese中国真实乱对白 | 亚洲精品com | 羞羞视频2023 | 蜜桃传媒视频麻豆第一区免费观看 | 一级做a爱片久久 | av在线免费观看播放 | 国产手机av在线 | 日韩精品中文字幕在线观看 | 草草久| 男人的天堂毛片 | 一区二区三区在线观看视频 | 欧美大片一级毛片 | 亚洲小视频在线 | 国产成人综合在线视频 | 视频在线91 | 国产高潮好爽好大受不了了 | 日本娇小18xxxⅹhd | 久色精品视频 | 国产亚洲综合精品 | 日日草视频 | 午夜天堂在线视频 | 国产精品一区二区三区在线看 | 法国性经典xxxhd | 九九午夜| 午夜丰满少妇高清毛片1000部 | 性感美女一级毛片 | 91午夜在线观看 | 99欧美精品 | 黄色高清av |