今天我参加了在线编程测试.采访者使用Codility评估我的代码和其他受访者.
在某个时刻,关于链接列表的问题已经提出.它将计算链表有多少项.
我做了唯一可行的方法,AFAIK:
//This is struct declarationstruct SomeStruct{ int value; SomeStruct* next;}int elementCount(SomeStruct* List){ int count = 0; if(List != NulL) { SomeStruct* temp = List; while(temp != NulL) { count++; temp = temp->next; } } return count;}
我记得当我发送这段代码作为这个问题的答案时,Codility指出这个解决方案是错误的,因为它耗费了太多时间来执行任务.
在我的头脑和this thread在SO上没有其他方法可以获得链表的大小而不需要遍历它,而不是简单的方式.
当Codility说这个解决方案错了时会有问题吗?还是有另一种方法?
PS:允许使用STL的测试
解决方法 好吧,你不必为每次迭代评估间接temp->接下来两次.你可以干脆做
int count( SomeStruct const* pNode ){ int result = 0; while( pNode != 0 ) { ++result; pNode = pNode->next; } return result;}
此外,作为WhozCraig notes,您的代码在逻辑上是错误的(通过一个结果产生关闭),而不仅仅是潜在的低效率.
总结以上是内存溢出为你收集整理的c – 在访谈测试中使用的LinkedList全部内容,希望文章能够帮你解决c – 在访谈测试中使用的LinkedList所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)