首页 新闻 赞助 找找看

一段简单代码的运行性能疑惑?

0
悬赏园豆:5 [已关闭问题] 关闭于 2019-09-03 09:14

在leetcode做一道简单的算法题,自己解决了问题。但是阅读最快的那一段代码,同样是一个循环,但是时间复杂度怎么差了10倍左右?

time:0ms

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        int fast=0,slow=0;
        for(int i=0;i<nums.size();++i)
        {
            if(nums[fast]==val)
            {
                fast++;
            }
            else
            {
                nums[slow] = nums[fast];
                slow ++;
                fast ++;
            }
        }
        return slow;
    }
};

time:8ms

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        int i=0;
        for(unsigned int j=0;j!=nums.size();++j){
            if(nums[j]!=val)
                nums[i++]=nums[j];
        }
        return i;
    }
};

PaintChen的主页 PaintChen | 菜鸟二级 | 园豆:206
提问于:2019-09-03 09:05
< >
分享
所有回答(3)
1

我觉得没必要纠结这么多,反正时间复杂度都是 O(n),Leetcode 测试时间可能也不准确

刘云宾 | 园豆:211 (菜鸟二级) | 2019-09-18 06:37
0

我觉得是不是将代码转成汇编再详细分析对比两者的差别,或许有寄存器的使用等缓存技术。

ColdplayFan | 园豆:215 (菜鸟二级) | 2019-10-12 13:51
0

没事,至少你的代码体积小

fenggwsx | 园豆:269 (菜鸟二级) | 2020-07-10 17:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册