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)
}