Advertisement
bayareabelletrist

Merge Sorted Lists

Jul 22nd, 2018
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. @interface ListNode: NSObject
  2. @property (nonatomic) ListNode* next;
  3. @property (nonatomic) NSNumber *data;
  4. @end
  5.  
  6. @implementation ListNode
  7. @end
  8.  
  9. @interface Solution: NSObject
  10. -(ListNode *)sortList:(ListNode *)l1 andList:(ListNode *)l2;
  11. @end
  12.  
  13. @implementation Solution
  14. -(ListNode *)sortList:(ListNode *)l1 andList:(ListNode *)l2 {
  15.     if(l1 == nil) return l2;
  16.     if(l2 == nil) return l1;
  17.     ListNode *sortedTail = [ListNode new];
  18.     ListNode *head = sortedTail;
  19.     while(l1 && l2) {
  20.         if([l1.data compare:l2.data] == NSOrderedAscending) {
  21.             sortedTail.next = l1;
  22.             sortedTail = l1;
  23.             l1 = l1.next;
  24.         } else {
  25.             sortedTail.next = l2;
  26.             sortedTail = l2;
  27.             l2 = l2.next;
  28.         }
  29.         sortedTail.next = nil;
  30.     }
  31.     if(l1) sortedTail.next = l1;
  32.     else sortedTail.next = l2;
  33.    
  34.     return head.next;
  35. }
  36. @end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement