2016-10-07 34 views
0

我正在做一个关于从链表中删除奇数值元素的在线编码问题。从链表中删除奇数值元素

但是,我的下面的代码由于超时而结束。我不确定哪里出了问题。因为这个算法的复杂性是O(n),我怀疑是否有一个算法可以比O(n)做得更好。有任何想法吗?

public static LinkedList(LinkedList header){ 

     if(header.val%2 != 0){ 
       header = header.next; 
     } 

     LinkedList current = header.next; 
     LinkedList previous = header; 

     while(current!=null){ 
       if(current.val%2 != 0){ 
         previous.next = current.next; 
         current = current.next; 
       } 
     } 

     return header; 
} 
+1

提示,当值是偶数时,代码中会发生什么? – RBarryYoung

+0

@RBarryYoung明白!谢谢! –

+0

(现在你已经知道了:如果第一个元素是奇数呢?你为每个奇数元素重新设置一个“next” - 是否需要运行_odds_?) – greybeard

回答

0

2箱子,这将使该代码失败:

  1. 如果输入的链表是空的,访问header.val和header.next可能会抛出异常。

  2. 如果只有偶数元素,则currentprevious将永远不会前进,从而导致无限循环。

+0

这个问题假定输入是不是空的。但是我得到第二点为什么会导致超时。谢谢! –