分治-歸并系列一>翻轉對

目錄

  • 題目:
  • 解析:
    • 策略一:
  • 代碼:
    • 策略二:
  • 代碼:

題目:

鏈接: link
在這里插入圖片描述


這題和逆序對區別點就是,要找到前一個元素是后一個元素的2倍
先找到目標值再,繼續堆排序

解析:

策略一:

這里是引用

代碼:

class Solution {int[] tmp;public int reversePairs(int[] nums) {int n = nums.length;tmp = new int[n];return mergesort(nums,0,n-1);}private int mergesort(int[] nums, int left, int right){int ret = 0;if(left >= right) return 0;int mid = (right + left) / 2;//左右兩邊找翻轉對ret += mergesort(nums,left,mid);ret += mergesort(nums,mid+1,right);//一左一右找翻轉對: 降序版本//輸入數組中的所有數字都在32位整數的表示范圍內:改為:2.0*nums[cur2]int cur1 = left, cur2 = mid+1, i = 0;while(cur1 <= mid && cur2 <= right){if(nums[cur1] <= 2.0*nums[cur2]){cur2++;}else {ret += right - cur2 + 1;cur1++;}if(cur2 > right) break;}//排序:cur1 = left; cur2 = mid+1;while(cur1 <= mid && cur2 <= right) tmp[i++] = nums[cur1] <= nums[cur2]? nums[cur2++] : nums[cur1++];while(cur1 <= mid) tmp[i++] = nums[cur1++];while(cur2 <= right) tmp[i++] = nums[cur2++];//放回原數組:for(int j = left; j <= right; j++){nums[j] = tmp[j-left];}return ret;}
}

策略二:

這里是引用

代碼:

class Solution {int[] tmp;public int reversePairs(int[] nums) {int n = nums.length;tmp = new int[n];return mergesort(nums,0,n-1);}一左一右找翻轉對: 升序版本:private int mergesort(int[] nums, int left, int right){int ret = 0;if(left >= right) return 0;int mid = (right + left) / 2;//左右兩邊找翻轉對ret += mergesort(nums,left,mid);ret += mergesort(nums,mid+1,right);//一左一右找翻轉對: 升序版本//輸入數組中的所有數字都在32位整數的表示范圍內:改為:2.0*nums[cur2]int cur1 = left, cur2 = mid+1, i = 0;while(cur1 <= mid && cur2 <= right){if(nums[cur1] / 2.0 <= nums[cur2]){cur1++;}else {ret += mid - cur1 + 1;cur2++;}if(cur1 > mid) break;}//排序:cur1 = left; cur2 = mid+1;while(cur1 <= mid && cur2 <= right) tmp[i++] = nums[cur1] <= nums[cur2]? nums[cur1++] : nums[cur2++];while(cur1 <= mid) tmp[i++] = nums[cur1++];while(cur2 <= right) tmp[i++] = nums[cur2++];//放回原數組:for(int j = left; j <= right; j++){nums[j] = tmp[j-left];}return ret;}
}

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

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

相關文章

從0到1打造一套適合自己接單的腳手架05自動化創建表

上一篇我們是手動創建的表&#xff0c;感覺不方便&#xff0c;后續如果要做成產品在部署的時候一個個的創建表太麻煩了&#xff0c;我們讓ai來自動創建表&#xff0c;輸入如下提示詞 現在這種單獨去navicate執行也不方便&#xff0c;我希望是有一個目錄里存放的表結構的語句&a…

minio改成https+域名訪問

思路有兩個&#xff1a; 方式一&#xff1a;通過nginx反向代理&#xff0c;將https配置在nginx&#xff0c;內部的MinIO還是使用HTTP&#xff1b;方式二&#xff1a;MinIO服務端直接配置成HTTPS&#xff1b; 注意&#xff1a; 私鑰需要命名為&#xff1a;private.key 公鑰需要…

VS Code構建C/C++開發環境(Windows with MinGW and CMake)

文章目錄 目的編譯工具鏈基礎開發與調試基于CMake開發與調試關于settings.json總結 目的 在Windows上進行C/C開發目前最最常用的IDE就是微軟的 Visual Studio &#xff0c;只是對我來說早些年的VS實在是太卡了&#xff0c;留下了不好的印象。后來沒怎么用過&#xff0c;現在下…

一組可能的機器學習問題列表

線性回歸與多項式擬合的關系最小二乘法在機器學習中的應用梯度下降是如何實現的貝葉斯分類器的應用場景高斯分布與判定在哪里用到模型的評估有哪些參數誤差中的偏差和方差定義訓練集分組的快捷方式如何度量模型性能查準率查全率的定義roc,aux的含義正則化是什么意思k均值用來解…

linux下io操作詳細解析

在 Linux 系統下&#xff0c;IO&#xff08;輸入/輸出&#xff09;操作是程序與外部設備&#xff08;如文件、網絡等&#xff09;交互的重要方式。Linux 提供了豐富的系統調用和庫函數來支持各種 IO 操作。以下是對 Linux 下 IO 操作的詳細解析&#xff0c;包括文件 IO、網絡 I…

wsl2+ubuntu22.04安裝blender教程(詳細教程)

本章教程介紹,如何在Windows操作系統上通過wsl2+ubuntu安裝blender并運行教程。Blender 是一款免費、開源的 ??3D 創作套件??,廣泛應用于建模、動畫、渲染、視頻編輯、特效制作等領域。它由全球開發者社區共同維護,支持跨平臺(Windows、macOS、Linux),功能強大且完全…

目標檢測YOLO實戰應用案例100講- 基于卷積神經網絡的小目標檢測算法研究與應用

目錄 知識儲備 基于改進YOLOv5的小目標檢測算法 一、環境配置(Python 3.8+) 二、核心代碼實現 1. 改進模型定義(models/yolov5s_tiny.py ) 2. 小目標數據增強(datasets/tiny_aug.py ) 3. 訓練腳本(train.py ) 三、關鍵改進點說明 四、實驗配置建議 前言 傳統…

智能DNS解析:解決高防IP地區訪問異常的實戰指南

摘要&#xff1a;針對高防IP在部分地區無法訪問的問題&#xff0c;本文設計基于智能DNS的流量調度方案&#xff0c;提供GeoDNS配置與故障切換代碼示例。 一、問題背景 運營商誤攔截或線路波動可能導致高防IP在福建、江蘇等地訪問異常。傳統切換方案成本高&#xff0c;智能DNS可…

根據 PID 找到對應的 Docker 容器

引言 在日常運維與調試過程中&#xff0c;我們常常需要查找某個進程所屬的 Docker 容器。當系統出現問題或資源異常時&#xff0c;根據進程的 PID 找到其所屬容器可以幫助我們迅速定位問題。本文將介紹如何利用 Linux 的 cgroup 機制&#xff0c;以及 Docker 提供的工具來完成…

NO.88十六屆藍橋杯備戰|動態規劃-多重背包|擺花(C++)

多重背包 多重背包問題有兩種解法&#xff1a; 按照背包問題的常規分析?式&#xff0c;仿照完全背包&#xff0c;第三維枚舉使?的個數&#xff1b;利??進制可以表??定范圍內整數的性質&#xff0c;轉化成01 背包問題。 ?建議&#xff1a;并不是所有的多重背包問題都能…

【遠程工具】0 std::process::Command 介紹

std::process::Command 是 Rust 標準庫中用于創建和配置子進程的主要類型。它允許你啟動新的進程、設置其參數和環境變量、重定向輸入/輸出等。 基本用法 use std::process::Command;let output Command::new("echo").arg("Hello, world!").output().ex…

【圖書管理系統】深入解析基于 MyBatis 數據持久化操作:全棧開發圖書管理系統獲取圖書列表接口(后端:計算圖書頁數、查詢當前頁展示的書籍)

圖書列表 實現服務器代碼(計算圖書總數量查詢當前頁需要展示的書籍) 后端響應時&#xff0c;需要響應給前端的數據 records&#xff1a;第 pageNum 頁要展示的圖書有哪些&#xff08;存儲到List集合中&#xff09;total&#xff1a;計算一共有多少本書&#xff08;用于告訴前…

如何在idea中快速搭建一個Spring Boot項目?

文章目錄 前言1、創建項目名稱2、勾選需要的依賴3、在setting中檢查maven4、編寫數據源5、開啟熱啟動&#xff08;熱部署&#xff09;結語 前言 Spring Boot 憑借其便捷的開發特性&#xff0c;極大提升了開發效率&#xff0c;為 Java 開發工作帶來諸多便利。許多大伙伴希望快速…

制作前的關鍵籌備:考試考核系統之核心要點

明確系統使用目的? 制作考試考核系統前&#xff0c;企業需明確系統使用目的&#xff0c;這是開發基石&#xff0c;不同目的決定系統功能特性。用于員工培訓考核時&#xff0c;系統要與培訓內容結合&#xff0c;能生成相應考題&#xff0c;檢驗員工知識掌握程度&#xff0c;具備…

Springboot把外部jar包打包進最終的jar包,并實現上傳服務器

1、創建lib目錄&#xff0c;把jar包放進這個目錄下&#xff0c;然后標記lib目錄為“資源根路徑”&#xff08;鼠標右鍵lib目錄->將目錄標記為->資源根路徑。之后lib文件夾會有如下的圖標變化&#xff09; 文件結構如下&#xff1a; 2、pom文件添加依賴 <dependency…

內容中臺的核心架構是什么?

數據中樞與服務API架構 在內容中臺的核心架構中&#xff0c;數據中樞作為基礎層&#xff0c;通過統一的數據模型與標準化接口&#xff0c;實現多源內容的集中存儲與治理。其核心能力體現在對結構化與非結構化數據的清洗、分類及跨系統同步&#xff0c;例如整合企業內部的CRM、…

Light RPC:一款輕量高效的Java RPC框架實踐指南

Light RPC&#xff1a;一款輕量高效的Java RPC框架實踐指南 一、框架簡介二、快速入門1. 環境準備2. 服務端配置2.1 添加依賴2.2 YAML配置2.3 接口與實現 3. 客戶端配置3.1 添加依賴3.2 YAML配置3.3 客戶端調用 三、核心設計解析四、適用場景與優勢對比五、總結 一、框架簡介 …

Hologres實時數倉在B站游戲的建設與實踐

一、背景 實時數據倉庫是近年來數據技術領域內的一大發展潮流。構建一個能夠實現高吞吐量寫入與更新、端到端全鏈路實時處理以及低延遲、高并發的實時數據倉庫&#xff0c;一直是眾多企業面臨的重大挑戰。隨著B站游戲業務的快速發展&#xff0c;對數據的實時應用需求也日益增加…

Android WiFi協議之P2P介紹與實踐

Android WiFi P2P WiFi P2P (Peer-to-Peer) 是 Android 提供的一種允許設備之間直接通過 WiFi 進行通信的技術&#xff0c;無需接入傳統的 WiFi 網絡或互聯網。這種技術也被稱為 WiFi Direct。 一、WiFi P2P 基本概念 1. 核心組件 P2P 設備&#xff1a;支持 WiFi P2P 的 And…

淺談在HTTP中GET與POST的區別

從 HTTP 報文來看&#xff1a; GET請求方式將請求信息放在 URL 后面&#xff0c;請求信息和 URL 之間以 &#xff1f;隔開&#xff0c;請求信息的格式為鍵值對&#xff0c;這種請求方式將請求信息直接暴露在 URL 中&#xff0c;安全性比較低。另外從報文結構上來看&#xff0c…