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