我在leetcode上使用老师的方法,用最后的优化方案提交了C语言代码,但是运行效率却非常的低?对此我不太理解。
代码是这样的:
typedef struct node{
int num;
int dis;
} node;
int numSquares(int n){
int front = 0, tail = 0;
node queue[1000005] = {0};
node nd = {n, 0};
queue[tail++] = nd;
int visited[n+1];
memset(visited, 0, sizeof(visited));
visited[n] = 1;
while (front != tail) {
node newNode = queue[front++];
for(int i = 0; ; ++i) {
int cal = newNode.num - i*i;
if (cal < 0)
break;
if (cal == 0)
return newNode.dis + 1;
if(visited[cal] == 0){
node next = {cal, newNode.dis+1};
queue[tail++] = next;
visited[cal] = 1;
}
}
}
return -1;
}
提交时间 提交结果 运行时间 内存消耗 语言
14 小时前 通过 288 ms 14 MB C
14 小时前 通过 252 ms 14 MB C