Google电话面试题目


谷歌的电话面试都是用Google Doc敲代码,题目本身不是很难,不过想敲出bug-free还是很难的。

直接上题目

A. 链表重组

有一个链表,里面用int 存放key,现在给定一个值 val,我们重组链表,小于val的节点放在前面。并且相对顺序不能变化

  1. struct TreeNode{ 
  2.     int value; 
  3.     TreeNode *pNext; 
  4. }; 
  5.  
  6. int ReconstructLinkedListByValue(TreeNode *head, int val){ 
  7.     TreeNode *leftPart = NULL, *leftHead = NULL; 
  8.     TreeNode *rightPart = NULL, *rightHead = NULL; 
  9.      
  10.     while(head){ 
  11.         if(head->value > val){ 
  12.             if(leftPart == NULL) leftHead = leftPart = head; 
  13.             else
  14.                 leftPart->pNext = head; 
  15.                 leftPart = head; 
  16.             } 
  17.         else
  18.             if(rightPart == NULL) rightHead = rightPart= head; 
  19.             else
  20.                 rightPart->pNext = head; 
  21.                 rightPart= head; 
  22.             } 
  23.         } 
  24.         head = head->pNext; 
  25.     } 
  26.     if(leftHead  == NULL){ 
  27.         return rightHead; 
  28.     } 
  29.     else
  30.         leftPart.pNext = rightHead; 
  31.         return leftHead; 
  32.     } 
  • 1
  • 2
  • 下一页

相关内容