获取列表中某个给定数字的3个最接近的值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取列表中某个给定数字的3个最接近的值?相关的知识,希望对你有一定的参考价值。

给定一个整数列表,找到给定数字的3个最接近的值。

=> (def mylist '(3 6 7 8 9 12 14))
=> (get_closest mylist 10)
(8 9 12)
答案
(letfn [(closest [a b]
            (take 3 (sort-by #(Math/abs (- % b)) a)))]
    (let [a '(3 6 7 8 9 12 14)]
        (closest a 10)))
另一答案

关注@ akond的回答,但作为一般功能:

(defn closest [x n coll]
  "Return a list of the n items of coll that are closest to x"
  (take n (sort-by #(Math/abs (- x %)) coll)))

(closest 4 3 (range 10))
; => (4 3 5)

请注意,如果coll是Java数组,sort-by可能会修改它。

以上是关于获取列表中某个给定数字的3个最接近的值?的主要内容,如果未能解决你的问题,请参考以下文章

在排序数组列表中查找2个最接近的先前值和2个最接近的下一个值

Leetcode 658.找到K个最接近的元素

leetcode-658 找到K个最接近的元素

2个最接近0的数字

C++:查找数组中最接近的值

如何从java中的列表中获取最近的纬度经度[重复]