提问者:小点点

相同提交的Leetcode执行时间差别很大(4ms对8ms)


Leetcode问题:https://Leetcode.com/problems/remove-element/submissions/

我的回答是:

int removeDuplicates(std::vector<int>& nums) {
    if (nums.empty()) { return 0; }
    int end = nums.size() - 1;
    int curr_val = nums[end];
    for (; end > 0; end--){
        if(curr_val == nums[end - 1]){ // there is duplicate before this value (curr_val)
            nums.erase(nums.begin() + end - 1); // remove the duplicate at the particular index
        } else {
            curr_val = nums[end - 1];
        }
    }

    return nums.size();
}

我的执行时间

我将同一个答案提交了五次,执行时间从开始的8ms4ms,再到0ms。 为何执行时间如此不一致? 跟Leetcode平台有关系吗?


共1个答案

匿名用户

LeetCode并不声称为运行程序提供一个密封的,一致的环境。 您可以想象,他们可能有成百上千台机器在上面运行提交。 有些可能是五年前买的,有些是全新的,有些暂时比其他的运行更多的提交,等等。可能存在某种关联机制,可以在第一次使用的同一服务器上运行第二次和第三次提交,从而避免一些初始化开销。 我个人注意到,JavaScript提交往往在第一次提交后运行得更快,即使没有任何更改。 在评估提交的性能时,少关注绝对运行时间,多关注相对于其他提交的运行时间。 如果你正在为面试进行练习,相对运行时间将告诉你,从大到小的角度来说,你的算法是否是正确的。 如果您的提交速度比其他提交慢很多,那么您可能使用了错误的方法。 在您的情况下,您的运行时间非常棒,所以考虑它已经完成,继续前进!