LCR 170. 交易逆序對的總數

解題思路:

歸并排序,在歸并的過程中不斷計算逆序對的個數

count += mid -i + 1;的來源見下圖,因為兩個數組都是單調遞增的,所以如果第一個數組的前一個元素大于第二個數組的對應元素,那么第一個數組的這一元素的后面的元素都會大于第二個數組的對應元素。

例如下面的例子:因為2>0,由兩個數組都單調遞增可知,2后面的元素都大于0,此時4個逆序對使得count增加4。

class Solution {//利用歸并排序解答,在合并的時候,當左邊的大于右邊,就計算逆序數。//計算公式; mid-left+1//定義一個全局的計數器變量int count = 0;public int reversePairs(int[] nums) {mergeSort(nums, 0, nums.length-1);return count;}public void mergeSort(int[] nums,int left,int right){//當只有一個節點的時候,直接返回,退出遞歸if(left >= right){return;}int mid = (left+right)/2;//左拆分mergeSort(nums,left,mid);//右拆分mergeSort(nums,mid+1,right);//合并merge(nums,left,mid,right);}public void merge(int[] nums,int left,int mid,int right){//定義一個臨時數組int[] temp = new int[right-left+1];//定義一個指針,指向臨時數組的第一個元素int t = 0;//定義一個指針,指向第一個數組的第一個元素int i = left;//定義一個指針,指向第二個數組的第一個元素int j = mid+1;        //當兩個數組都有元素的時候,遍歷比較每個元素大小while(i <= mid && j <= right){//比較兩個數組的元素,取較小的元素加入到,臨時數組中//并將兩個指針指向下一個元素if(nums[i] <= nums[j]){temp[t++] = nums[i++];}else{//當左邊數組的大與右邊數組的元素時,就對當前元素以及后面的元素的個數進行統計,//此時這個數就是,逆序數//定義一個計數器,記下每次合并中存在的逆序數。count += mid-i+1;temp[t++] = nums[j++];}}//當左邊的數組沒有遍歷完成后,直接將剩余元素加入到臨時數組中while(i <= mid)temp[t++] = nums[i++];//當右邊的數組沒有遍歷完成后,直接將剩余元素加入到臨時數組中while(j <= right)temp[t++] =nums[j++];//將新數組中的元素,覆蓋nums舊數組中的元素。//此時數組的元素已經是有序的for(int k =0; k< temp.length;k++){nums[left+k] = temp[k];}}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/718636.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/718636.shtml
英文地址,請注明出處:http://en.pswp.cn/news/718636.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

借助Aspose.SVG圖像控件,在 C# 中將圖像轉換為 Base64

Base64 編碼是一種二進制到文本的編碼方案&#xff0c;可有效地將二進制數據轉換為 ASCII 字符&#xff0c;為數據交換提供通用格式。在某些情況下&#xff0c;我們可能需要將JPG或PNG圖像轉換為 Base64 字符串數據。在這篇博文中&#xff0c;我們將學習如何在 C# 中將圖像轉換…

分享經典、現代和前沿軟件工程課程

隨著信息技術的發展&#xff0c;軟件已經深入到人類社會生產和生活的各個方面。軟件工程是將工程化的方法運用到軟件的開發、運行和維護之中&#xff0c;以達到提高軟件質量&#xff0c;降低開發成本的目的。軟件工程已經成為當今最活躍、最熱門的學科之一。 本次軟件工程MOOC課…

模板06-普通函數與函數模板調用規則

1、如果函數模板和普通函數都可以實現&#xff0c;優先調用普通函數 2、可以通過空模板參數列表來強調調用函數模板 3、函數模板也可以發生重載 4、如果函數模板可以發生更好的匹配&#xff0c;優先調用函數模板 #include <iostream> using namespace std;int my_add …

混合云技術架構是什么樣的

混合云技術架構是什么樣的&#xff1f;混合云技術架構是一種將公有云和私有云相結合的云計算架構。它允許組織在私有云和公有云之間靈活地共享和遷移應用程序、數據和服務。 混合云技術架構的設計可以根據組織的需求和業務要求進行定制&#xff0c;通常包括以下組件&#xff1…

現在如何才能開通微信公眾號留言功能?

為什么公眾號沒有留言功能&#xff1f;2018年2月12日之后直到現在&#xff0c;新注冊公眾號的運營者會發現一個問題&#xff1a;無論是個人還是企業的公眾號&#xff0c;在后臺都找不到留言功能了。這對公眾號來說絕對是一個極差的體驗&#xff0c;少了一個這么重要的功能&…

萬村樂數字鄉村系統開源代碼:革命性引領,助推鄉村振興新篇章

如今&#xff0c;國際社會普遍認為信息化、數字化已是重大且不可逆轉的發展趨勢&#xff0c;如何讓廣大農村地區充分分享到這個發展帶來的紅利&#xff0c;從而提升農村的經濟活力&#xff0c;確保村民生活質量不斷優化&#xff0c;已然成為我們需要認真研究并積極解決的重大議…

Window下編寫的sh文件在Linux/Docker中無法使用

Window下編寫的sh文件在Linux/Docker中無法使用 一、sh文件目的1.1 初始狀態1.2 目的 二、過程與異常2.1 首先獲取標準ubuntu20.04 - 正常2.2 啟動ubuntu20.04容器 - 正常2.3 執行windows下寫的preInstall文件 - 報錯 三、檢查和處理3.1 評估異常3.2 處理異常3.3 調整后運行測試…

WebFlux的探索與實戰 - r2dbc的多表查詢

前言 在一個有數據庫的項目中&#xff0c;條件查詢與多表查詢總是同幽靈般如影隨形。 好久不見朋友們&#xff0c;我是forte。 本篇文章會以我的 個人經驗 來介紹下如何在 Spring WebFlux 中使用 Spring Data R2DBC 進行多表查詢。 這次我會以一個自己寫的項目作為基礎來為各…

[課程]yolov9目標檢測封裝成類調用

搞定系列&#xff1a;yolov9目標檢測封裝成類調用 課程地址&#xff1a;https://edu.csdn.net/course/detail/39352 課程介紹課程目錄討論留言 你將收獲 學會yolov9封裝基本技巧和大體思路 學會yolov9封裝類的API調用技巧和自由擴展 學會使用Pycharm調試技巧和運行腳本技…

「連載」邊緣計算(二十四)03-04:邊緣部分源碼(源碼分析篇)

&#xff08;接上篇&#xff09; 在Register()函數中對EdgeHub struct的初始化只是對EdgeHub struct中的controller進行初始化。controller的初始化函數具體如下所示。 KubeEdge/edge/pkg/edgehub/controller.go //NewEdgeHubController creates and returns a EdgeHubContro…

uniapp+vue基于Android的圖書館借閱系統qb4y3-nodejs-php-pyton

uni-app框架&#xff1a;使用Vue.js開發跨平臺應用的前端框架&#xff0c;編寫一套代碼&#xff0c;可編譯到Android、小程序等平臺。 框架支持:springboot/django/php/Ssm/flask/express均支持 前端開發:vue 語言&#xff1a;pythonjavanode.jsphp均支持 運行軟件:idea/eclip…

2023天津公租房網上登記流程圖,注冊到信息填寫

2023年天津市公共租賃住房網上登記流程圖 小編為大家整理了天津市公共租賃住房網上登記流程&#xff0c;從登記到填寫信息。 想要體驗的朋友請看一下。 申請天津公共租賃住房時拒絕申報家庭情況會怎樣&#xff1f; 天津市住房保障家庭在享受住房保障期間&#xff0c;如在應申…

智慧草莓基地:Java與SpringBoot的技術革新

??計算機畢業編程指導師 ??個人介紹&#xff1a;自己非常喜歡研究技術問題&#xff01;專業做Java、Python、微信小程序、安卓、大數據、爬蟲、Golang、大屏等實戰項目。 ??實戰項目&#xff1a;有源碼或者技術上的問題歡迎在評論區一起討論交流&#xff01; ?? Java、…

xss.haozi:0x00

0x00沒有什么過濾所以怎么寫都沒有關系有很多解 <script>alert(1)</script>

【Linux取經路】文件系統——inode與軟硬鏈接

文章目錄 一、前言二、認識硬件——磁盤2.1 磁盤的存儲構成2.2 磁盤的邏輯抽象 三、操作系統對磁盤的使用3.1 再來理解創建文件3.2 再來理解刪除文件3.3 再來理解目錄 四、硬鏈接五、軟鏈接六、結語 一、前言 在之前的【Linux取經路】文件系統之被打開的文件——文件描述符的引…

DevStack 基于 Ubuntu 部署 OpenStack

Devstack 簡介 DevStack 是一系列可擴展的腳本&#xff0c;用于基于 git master 的最新版本快速調出完整的 OpenStack 環境。devstack 以交互方式用作開發環境和 OpenStack 項目大部分功能測試的基礎。 devstack 透過執行 stack.sh 腳本&#xff0c;搭建 openstack 環境&…

AcWing 799. 最長連續不重復子序列

Problem: AcWing 799. 最長連續不重復子序列 文章目錄 思路解題方法復雜度Code 思路 這是一個求最長連續不重復子序列的問題。我們可以使用雙指針&#xff08;滑動窗口&#xff09;的方法來解決。我們維護一個窗口&#xff0c;并使用一個數組來記錄窗口內元素的出現次數。當窗口…

深度學習的一個完整過程通常包括以下幾個步驟

深度學習的一個完整過程通常包括以下幾個步驟&#xff1a; 問題定義和數據收集&#xff1a; 定義清晰的問題&#xff0c;明確任務的類型&#xff08;分類、回歸、聚類等&#xff09;以及預期的輸出。收集和整理用于訓練和評估模型的數據集。確保數據集的質量&#xff0c;進行預…

車聯網產品與應用

在中國&#xff0c;先是小鵬汽車官宣“智駕覆蓋城市數量、可用里程以及用戶口碑均為行業第一”。后有華為問界官宣OTA&#xff0c;領航功能全國可用路段高達99%&#xff0c;“全國都能用&#xff0c;哪哪都能開”。 似乎分分鐘&#xff0c;“自動駕駛”就要干成了。但日新月異的…

Day31|貪心算法1

貪心的本質是選擇每一階段的局部最優&#xff0c;從而達到全局最優。 無固定套路&#xff0c;舉不出反例&#xff0c;就可以試試貪心。 一般解題步驟&#xff1a; 1.將問題分解成若干子問題 2.找出適合的貪心策略 3.求解每一個子問題的最優解 4.將局部最優解堆疊成全局最…