#array #algorithm #rotate #list #clockwise #rotate-anticlock #rotate-clock

rotation

按顺时针和逆时针旋转您的列表

1 个不稳定版本

0.1.1 2021年8月27日

#9 in #rotate

MIT 许可证

9KB
83

rotation

更高效算法的想法来源于 这个问题 的 stack overflow 回答。

引用回答者的话,“反转三次是最简单的,但每个元素正好移动两次,需要 O(N) 时间和 O(1) 空间。也可以在 O(N) 时间和 O(1) 空间内移动数组,使每个元素正好移动一次。”

有关如何汇总更多信息,请参阅答案(以及其他答案)。

此包公开了2个API,即用于顺时针旋转列表的 rotate_clock 函数,以及用于逆时针旋转的 rotate_anticlock。以下给出两个示例,演示如何使用它们。

快速开始

use rotation::interface as rotator;

fn main() {
    let mut list = [1, 2, 3, 4, 5];

    let spin = 2;

    // rotate clockwise
    let rotated = rotator::rotate_clock(&mut list, spin);

    println!("{:?}", rotated); // [4, 5, 1, 2, 3];
 
    // rotate anti clockwise
    let rotated = rotator::rotate_anticlock(&mut list, spin);

    println!("{:?}", rotated); // [3, 4, 5, 1, 2];
}

依赖项