#sum #numbers #algorithm

closest-sum-pair

寻找一个列表中与给定数值最接近的和的成对元素

1 个稳定版本

1.0.0 2021 年 11 月 12 日
0.5.0 2021 年 9 月 28 日
0.4.1 2021 年 9 月 27 日
0.3.0 2021 年 9 月 2 日
0.1.9 2021 年 7 月 24 日

1842算法

每月下载 26

MIT 许可证

5KB

功能描述

寻找列表中与给定数值最接近的和的成对元素。列表可以是数组或向量。代码简单,没有递归。

它期望一个 已排序的列表。时间复杂度为 O(N)。空间复杂度为 O(1)

功能特性

  1. 支持多种类型,包括浮点数。但由于 f64 无法精确表示这些值(这在将各种类型尝试转换为此crate中通用类型f64时是相关的),因此不支持 usizeu64u128i64i128f64

    支持所有其他类型,例如 i8u8i16u16i32u32f32

    因此,如果你的变量类型是 u64i64,你应该在将其传递给函数之前将其转换为 u32i32

  2. 代码表达清晰,易于阅读。

版本说明:移除了不必要的冗余并提高了性能。

如何使用

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

无运行时依赖项