You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LeetCode同一Valid Tic-Tac-Toe代码提交运行时差异巨大原因咨询

LeetCode相同代码提交运行时波动的原因分析

问题描述

在LeetCode上解决Valid Tic-Tac-Toe问题时,多次提交完全相同的代码,运行时却波动极大,有时为0ms,有时为9ms、7ms或5ms。想知道这是什么原因,是否是代码结构存在问题(比如内存泄漏)?

附上的代码如下:

class Solution {

public:
        
    bool validTicTacToe(vector<string>& board) {
        
        int i,j,a[8]={0},b[8]={0};
        int o=0,x=0;
        string s="";
        
        for(i=0;i<3;i++)
        {
            for(j=0;j<3;j++)
            {
                if(board[i][j]=='X')
                {x++;
                 a[i]++;
                 a[j+3]++;
                if(i==j)
                    a[6]++;
                if(j==2-i)
                    a[7]++;
                }
                else if(board[i][j]=='O')
                {   o++;
                    b[i]++;
                    b[j+3]++;
                if(i==j)
                    b[6]++;
                if(j==2-i)
                    b[7]++;
                }
                
            }
        }
        
        for(i=0;i<8;i++)
        {
            if(a[i]==3)
            {s="a";
             break;
            }
             
            if(b[i]==3)
            {s="b";break;

            }
        }
        
        
        if(s=="" && o+x<9)
            s="p";
        else if(s=="")
            s="d";
        
        if(s=="d" && x!=5)
            return false;
        
        if(s=="b" && o!=x)
            return false;
        
        if(s=="a" && ((o+1)!=x))
            return false;
        
        
        if(s=="p")
        {
            if(o==x)
                return true;
            else if(x==o+1)
                return true;
            else
                return false;
        }
        
        return true;
    }
};

原因分析

首先可以明确:你的代码没有内存泄漏,运行时波动和代码结构无关,主要是LeetCode的评测环境导致的,具体原因包括:

  • 服务器负载波动:LeetCode的评测服务器同时处理大量用户的提交请求,当服务器繁忙时,分配给你的代码的CPU时间片会被其他任务挤占,导致运行时变长;空闲时则能快速执行,出现0ms的情况。
  • 计时精度与误差:LeetCode的运行时统计本身存在一定精度误差,尤其是当代码执行时间极短(比如小于1ms)时,会被显示为0ms,而实际执行时间可能在0-1ms之间波动,当系统调度有微小延迟时,就会被统计为5ms、7ms等数值。
  • 编译器优化差异:虽然你提交的代码相同,但LeetCode的编译器可能会根据当前环境的不同,应用不同的优化策略,或者缓存的编译结果不同,也会导致运行时出现小幅波动。

你的代码逻辑清晰,使用的都是栈上变量(a、b数组,o、x等),没有动态分配内存,不存在内存泄漏问题。这类小规模算法题的运行时波动是正常现象,不需要过度担心。

内容的提问来源于stack exchange,提问作者Linico

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 21:36:35