algorithm - 我无法理解 Rust 代码的区别

标签 algorithm rust

我试图在代码战中解决这个问题。 https://www.codewars.com/kata/are-they-the-same/

我写了下面的代码。

fn comp(mut a: Vec<i64>, mut b: Vec<i64>) -> bool {
    a.sort();
    b.sort();
    a = a.iter().map(|x| x * x).collect();

    a == b
}

判断系统说有一个输入,我的代码返回 false 但应该是 true。我不明白这是什么问题。

我看到了其他人通过所有测试的答案。这是其中之一。

fn comp(a: Vec<i64>, b: Vec<i64>) -> bool {
    let mut a1 = a.iter().map(|&x| x * x).collect::<Vec<_>>(); 
    let mut a2 = b;
    a1.sort();
    a2.sort();
    a1 == a2
}

平方和排序的顺序重要吗?

最佳答案

很可能某些输入包含负数,因此顺序很重要。例如。 -2 < -1 ,但是(-2)² > (-1)² .

关于algorithm - 我无法理解 Rust 代码的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58799246/

相关文章:

algorithm - 最大利润-记忆化、DP、最优性

algorithm - 在图中找到最小瓶颈路径

struct - 结构的所有字段的相同生命周期参数

macos - 无法在 macOS 10.12 : object file was built for newer OSX version (10. 7) 上编译 Rust 代码而不是被链接 (8.0)

pointers - 如果我想在 Rust 中安全地编码,我应该在不使用指针算法的情况下编码吗?

评估表达式的算法

java - Tic_Tac_Toe_对抗计算机 使用 MiniMax 算法,当计算机轮到 4*4 棋盘时,它玩得不好?

ruby-on-rails - 一个很好的 gem 排名算法

parsing - PEG语法解析不是关键字的标识符名称

vector - 获得矢量滤波器及其补充的惯用且有效的方法