」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 。找出第 K 個最小對距離

。找出第 K 個最小對距離

發佈於2024-08-15
瀏覽:928

. Find K-th Smallest Pair Distance

719。求第 K 個最小對距離

難度: 困難

主題: 陣列、兩個指標、二分查找、排序

整數對距離定義為a和b之間的絕對差。

給定一個整數數組nums 和一個整數k,返回第kth所有對 nums[i] 和nums[j] 中最小的距離,其中0 .

範例1:

  • 輸入: nums = [1,3,1], k = 1
  • 輸出: 0
  • 解釋: 這是所有的對:
  (1,3) -> 2
  (1,1) -> 0
  (3,1) -> 2

則第1最小距離對為(1,1),其距離為0。

範例2:

  • 輸入: nums = [1,1,1], k = 2
  • 輸出: 0

範例3:

  • 輸入: nums = [1,6,1], k = 3
  • 輸出: 5

約束:

  • n == nums.length
  • 2 4
  • 0 6
  • 1

暗示:

  1. 二分找答案。如何檢查有多少對距離

解決方案:

我們可以結合使用二分查找和雙指標技術。這是解決此問題的逐步方法:

方法:

  1. 將陣列排序:首先,將陣列 nums 進行排序。排序有助於有效計算距離小於或等於給定值的對的數量。

  2. 距離二分查找:使用二分查找找到第 k 個最小距離。距離的搜尋空間範圍從 0(最小可能距離)到 max(nums) - min(nums)(最大可能距離)。

  3. 計數距離 ≤ Mid 的對:對於二分查找中的每個 mid 值,計算距離小於或等於 mid 的對的數量。這可以使用兩指標方法有效地完成。

  4. 調整二分查找範圍:根據距離小於或等於mid的對的數量,調整二分查找範圍。如果計數小於k,則增加下界;否則,減少上限。

讓我們用 PHP 實作這個解決方案:719。求第 K 個最小對距離

解釋:

  • countPairsWithDistanceLessThanOrEqualTo:此函數計算有多少對距離小於或等於 mid。它使用兩個指針,其中right是當前元素,left調整直到nums[right]和nums[left]之間的差小於或等於mid。

  • smallestDistancePair:此函數使用二分查找來找出第 k 個最小距離。低值和高值定義距離的目前搜尋範圍。使用 countPairsWithDistanceLessThanOrEqualTo 函數檢查中間值。根據結果調整搜尋空間。

此演算法有效地找出第 k 個最小的對距離,時間複雜度為 O(n log(max(nums) - min(nums)) n log n)。

聯絡連結

如果您發現本系列有幫助,請考慮在 GitHub 上給存儲庫 一顆星,或者在您最喜歡的社交網絡上分享該帖子? 。您的支持對我來說意義重大!

如果您想要更多類似的有用內容,請隨時關注我:

  • 領英
  • GitHub
版本聲明 本文轉載於:https://dev.to/mdarifulhaque/719-find-k-th-smallest-pair-distance-2pep?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 如何為PostgreSQL中的每個唯一標識符有效地檢索最後一行?
    如何為PostgreSQL中的每個唯一標識符有效地檢索最後一行?
    postgresql:為每個唯一標識符提取最後一行,在Postgresql中,您可能需要遇到與在數據庫中的每個不同標識相關的信息中提取信息的情況。考慮以下數據:[ 1 2014-02-01 kjkj 在數據集中的每個唯一ID中檢索最後一行的信息,您可以在操作員上使用Postgres的有效效率: ...
    程式設計 發佈於2025-07-15
  • Java數組中元素位置查找技巧
    Java數組中元素位置查找技巧
    在Java數組中檢索元素的位置 利用Java的反射API將數組轉換為列表中,允許您使用indexof方法。 (primitives)(鏈接到Mishax的解決方案) 用於排序陣列的數組此方法此方法返回元素的索引,如果發現了元素的索引,或一個負值,指示應放置元素的插入點。
    程式設計 發佈於2025-07-15
  • 如何使用替換指令在GO MOD中解析模塊路徑差異?
    如何使用替換指令在GO MOD中解析模塊路徑差異?
    在使用GO MOD時,在GO MOD 中克服模塊路徑差異時,可能會遇到衝突,其中可能會遇到一個衝突,其中3派對軟件包將另一個帶有導入套件的path package the Imptioned package the Imptioned package the Imported tocted pac...
    程式設計 發佈於2025-07-15
  • 如何使用Java.net.urlConnection和Multipart/form-data編碼使用其他參數上傳文件?
    如何使用Java.net.urlConnection和Multipart/form-data編碼使用其他參數上傳文件?
    使用http request 上傳文件上傳到http server,同時也提交其他參數,java.net.net.urlconnection and Multipart/form-data Encoding是普遍的。 Here's a breakdown of the process:Mu...
    程式設計 發佈於2025-07-15
  • Java是否允許多種返回類型:仔細研究通用方法?
    Java是否允許多種返回類型:仔細研究通用方法?
    在Java中的多個返回類型:一種誤解類型:在Java編程中揭示,在Java編程中,Peculiar方法簽名可能會出現,可能會出現,使開發人員陷入困境,使開發人員陷入困境。 getResult(string s); ,其中foo是自定義類。該方法聲明似乎擁有兩種返回類型:列表和E。但這確實是如此嗎...
    程式設計 發佈於2025-07-15
  • \“(1)vs.(;;):編譯器優化是否消除了性能差異?\”
    \“(1)vs.(;;):編譯器優化是否消除了性能差異?\”
    答案: 在大多數現代編譯器中,while(1)和(1)和(;;)之間沒有性能差異。編譯器: perl: 1 輸入 - > 2 2 NextState(Main 2 -E:1)V-> 3 9 Leaveloop VK/2-> A 3 toterloop(next-> 8 last-> 9 ...
    程式設計 發佈於2025-07-15
  • 如何將PANDAS DataFrame列轉換為DateTime格式並按日期過濾?
    如何將PANDAS DataFrame列轉換為DateTime格式並按日期過濾?
    Transform Pandas DataFrame Column to DateTime FormatScenario:Data within a Pandas DataFrame often exists in various formats, including strings.使用時間數據時...
    程式設計 發佈於2025-07-15
  • 使用jQuery如何有效修改":after"偽元素的CSS屬性?
    使用jQuery如何有效修改":after"偽元素的CSS屬性?
    在jquery中了解偽元素的限制:訪問“ selector 嘗試修改“:”選擇器的CSS屬性時,您可能會遇到困難。 This is because pseudo-elements are not part of the DOM (Document Object Model) and are th...
    程式設計 發佈於2025-07-15
  • Python元類工作原理及類創建與定制
    Python元類工作原理及類創建與定制
    python中的metaclasses是什麼? Metaclasses負責在Python中創建類對象。就像類創建實例一樣,元類也創建類。他們提供了對類創建過程的控制層,允許自定義類行為和屬性。 在Python中理解類作為對象的概念,類是描述用於創建新實例或對象的藍圖的對象。這意味著類本身是使用...
    程式設計 發佈於2025-07-15
  • Android如何向PHP服務器發送POST數據?
    Android如何向PHP服務器發送POST數據?
    在android apache httpclient(已棄用) httpclient httpclient = new defaulthttpclient(); httppost httppost = new httppost(“ http://www.yoursite.com/script.p...
    程式設計 發佈於2025-07-15
  • 如何使用組在MySQL中旋轉數據?
    如何使用組在MySQL中旋轉數據?
    在關係數據庫中使用mySQL組使用mySQL組進行查詢結果,在關係數據庫中使用MySQL組,轉移數據的數據是指重新排列的行和列的重排以增強數據可視化。在這裡,我們面對一個共同的挑戰:使用組的組將數據從基於行的基於列的轉換為基於列。 Let's consider the following ...
    程式設計 發佈於2025-07-15
  • CSS強類型語言解析
    CSS強類型語言解析
    您可以通过其强度或弱输入的方式对编程语言进行分类的方式之一。在这里,“键入”意味着是否在编译时已知变量。一个例子是一个场景,将整数(1)添加到包含整数(“ 1”)的字符串: result = 1 "1";包含整数的字符串可能是由带有许多运动部件的复杂逻辑套件无意间生成的。它也可以是故意从单个真理...
    程式設計 發佈於2025-07-15
  • 解決Spring Security 4.1及以上版本CORS問題指南
    解決Spring Security 4.1及以上版本CORS問題指南
    彈簧安全性cors filter:故障排除常見問題 在將Spring Security集成到現有項目中時,您可能會遇到與CORS相關的錯誤,如果像“訪問Control-allo-allow-Origin”之類的標頭,則無法設置在響應中。為了解決此問題,您可以實現自定義過濾器,例如代碼段中的MyFi...
    程式設計 發佈於2025-07-15
  • 將圖片浮動到底部右側並環繞文字的技巧
    將圖片浮動到底部右側並環繞文字的技巧
    在Web設計中圍繞在Web設計中,有時可以將圖像浮動到頁面右下角,從而使文本圍繞它纏繞。這可以在有效地展示圖像的同時創建一個吸引人的視覺效果。 css位置在右下角,使用css float and clear properties: img { 浮點:對; ...
    程式設計 發佈於2025-07-15

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3