1 个稳定版本
| 1.0.0 | 2021 年 11 月 12 日 |
|---|---|
| 0.5.0 |
|
| 0.4.1 |
|
| 0.3.0 |
|
| 0.1.9 |
|
1842 在 算法 中
每月下载 26 次
5KB
功能描述
寻找列表中与给定数值最接近的和的成对元素。列表可以是数组或向量。代码简单,没有递归。
它期望一个 已排序的列表。时间复杂度为 O(N)。空间复杂度为 O(1)。
功能特性
-
支持多种类型,包括浮点数。但由于 f64 无法精确表示这些值(这在将各种类型尝试转换为此crate中通用类型f64时是相关的),因此不支持
usize、u64、u128、i64、i128和f64。支持所有其他类型,例如
i8、u8、i16、u16、i32、u32和f32。因此,如果你的变量类型是
u64或i64,你应该在将其传递给函数之前将其转换为u32和i32。 -
代码表达清晰,易于阅读。
版本说明:移除了不必要的冗余并提高了性能。
如何使用
此crate导出一个名为 find_pair 的函数,它期望一个 已排序的列表(可以是向量或数组)以及你想要查找的和。
如果没有确切的匹配,它将返回最接近的和。
请确保在将列表作为函数参数传递之前对其进行排序。
快速入门
use closest_sum_pair::interface::find_pair;
fn main() {
let mut list = [-2, -4, -7, -2, -5, -13, -7];
list.sort();
let desired_sum = -1;
let pair = find_pair(&list, desired_sum);
println!("pair {:?}", pair) // (-2, -2)
}
浮点数的示例
use closest_sum_pair::interface::find_pair;
fn main() {
let mut list: [f32; 7] =
[-2.2, -4.0, -7.9, -2.1, -5.5, -13.0, -7.1];
list.sort_by(|a, b| a.partial_cmp(b).unwrap());
let desired_sum = -16.7;
let pair = find_pair(&list, desired_sum);
println!("pair {:?}", pair) // (-13.0, -4.0)
}