4个版本 (1个稳定版)
1.0.0 | 2019年8月5日 |
---|---|
0.2.0 | 2018年12月26日 |
0.1.1 | 2018年7月30日 |
0.1.0 | 2018年7月29日 |
#1415 在 算法 中
17KB
324 行
lis
Rust语言实现的最长递增子序列算法。
同时提供了一个用于列表差分的函数,该函数利用了LIS算法。
示例
此crate暴露的主要特质是LisExt
,它为诸如数组等实现
use lis::LisExt;
assert_eq!([2, 1, 4, 3, 5].longest_increasing_subsequence(), [1, 3, 4]);
使用diff_by_key
可以比较两个列表
use lis::{diff_by_key, DiffCallback};
struct Cb;
impl DiffCallback<usize, usize> for Cb {
fn inserted(&mut self, new: usize) {
assert_eq!(new, 2);
}
fn removed(&mut self, old: usize) {}
fn unchanged(&mut self, old: usize, new: usize) {
assert_eq!(old, 1);
assert_eq!(new, 1);
}
}
diff_by_key(1..2, |x| x, 1..3, |x| x, &mut Cb);
依赖
~135KB