Advertisement
Guest User

Untitled

a guest
Feb 26th, 2020
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.76 KB | None | 0 0
  1. /**
  2. * Definition for singly-linked list.
  3. * struct ListNode {
  4. * int val;
  5. * ListNode *next;
  6. * ListNode(int x) : val(x), next(NULL) {}
  7. * };
  8. */
  9. class Solution {
  10. public:
  11. ListNode* mergeKLists(vector<ListNode*>& lists)
  12. {
  13. if (lists.empty())
  14. return nullptr;
  15.  
  16. ListNode* listNodeRet = nullptr;
  17. ListNode* listNodeHelp = nullptr;
  18. ListNode* listNodeMin = lists[0];
  19. size_t lastI = 0;
  20. bool isAnyListNotNullptr = false;
  21.  
  22. do
  23. {
  24. isAnyListNotNullptr = false;
  25. for (size_t i = 0; i < lists.size(); ++i)
  26. {
  27. if (lastI == i)
  28. continue;
  29. ListNode* listsI = lists[i];
  30. if (!listsI)
  31. continue;
  32. if (!listNodeMin)
  33. {
  34. listNodeMin = listsI;
  35. lastI = i;
  36. continue;
  37. }
  38.  
  39. isAnyListNotNullptr = true;
  40.  
  41. if (listsI->val < listNodeMin->val)
  42. {
  43. listNodeMin = listsI;
  44. lastI = i;
  45. }
  46. }
  47.  
  48. if (!listNodeRet)
  49. {
  50. listNodeRet = listNodeMin;
  51. listNodeHelp = listNodeRet;
  52. }
  53. else
  54. {
  55. listNodeHelp->next = listNodeMin;
  56. listNodeHelp = listNodeHelp->next;
  57. }
  58.  
  59. if (listNodeMin)
  60. listNodeMin = listNodeMin->next;
  61. if (lists[lastI])
  62. lists[lastI] = lists[lastI]->next;
  63.  
  64. } while (isAnyListNotNullptr);
  65.  
  66. return listNodeRet;
  67. }
  68. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement