Re: [閒聊] 每日leetcode

看板Marginalman作者 (神楽めあ的錢包)時間1年前 (2024/08/14 20:06), 編輯推噓2(201)
留言3則, 3人參與, 1年前最新討論串711/1548 (看更多)
719. Find K-th Smallest Pair Distance 有一個矩陣nums和一個整數k 將nums中任意兩個元素nums[i]、nums[j]的差值(絕對值) 進行排序,請回傳第k小的差值 思路: 跟8/4號的每日1508. Range Sum of Sorted Subarray Sums基本一樣 就透過二分搜尋去找出第k小的差值 先對nums進行排序 最小的差值一定不會比0小 最大的差值就是nums[n-1]-nums[0] 所以設L=0、R=nums[n-1]-nums[0]、M=L+(R-L)/2 就用two pointer去算差值小於M的有幾個 如果比k少那L=M+1 不然就R=M 這樣就可以找到答案了 GOLANG CODE : func smallestDistancePair(nums []int, k int) int { n := len(nums) slices.Sort(nums) l, r := 0, nums[n-1]-nums[0] for r > l { m := l + (r-l)/2 cnt := 0 i, j := 0, 1 for i < n { for j < n && nums[j]-nums[i] <= m { j++ } cnt += j - i - 1 i++ } if cnt < k { l = m + 1 } else { r = m } } return l } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.73.50.147 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1723637198.A.80C.html

08/14 20:09, 1年前 , 1F
大師
08/14 20:09, 1F

08/14 20:11, 1年前 , 2F
大師
08/14 20:11, 2F

08/15 00:35, 1年前 , 3F
大師
08/15 00:35, 3F
文章代碼(AID): #1cl9tEWC (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1cl9tEWC (Marginalman)