< 返回版块

dreamtale90 发表于 2024-07-25 17:50

Tags:Rust, C++

本人是刚从C++转过来的newbie,今天在LeetCode刷了道题,分别用C++和Rust以相同思路实现,得到的结果根本不是一个数量级的,求大佬帮我分析一下原因,不胜感激。

平均数据如下:

语言	耗时(ms)	内存(MB)
C++	300	177
Rust	35	4.2

题目链接:2766. 重新放置石块

C++实现

class Solution {
public:
    vector<int> relocateMarbles(vector<int>& nums, vector<int>& moveFrom, vector<int>& moveTo) {
        std::unordered_set<int> unique_set;
        for (auto &item : nums) {
            unique_set.insert(item);
        }

        for (size_t i = 0; i < moveFrom.size(); i++) {
            unique_set.erase(moveFrom[i]);
            unique_set.insert(moveTo[i]);
        }

        vector<int> result;
        for (auto &item : unique_set)
            result.push_back(item);

        sort(result.begin(), result.end());
        return result;
    }
};

Rust实现

use std::collections::HashSet;

impl Solution {
    pub fn relocate_marbles(nums: Vec<i32>, move_from: Vec<i32>, move_to: Vec<i32>) -> Vec<i32> {
        let mut unique_set:HashSet<i32> = nums.into_iter().collect();

        for i in 0..move_from.len() {
            unique_set.remove(&move_from[i]);
            unique_set.insert(move_to[i]);
        }

        let mut result = Vec::new();
        for iter in unique_set {
            result.push(iter);
        }

        result.sort();
        result
    }
}

评论区

写评论
Dangerise 2024-07-25 19:39

也许是Rust有后发优势,标准库算法普遍优于STL?

1 2 共 21 条评论, 2 页