当前位置:   article > 正文

(每日一练C++)143. 重排链表_给定一个单链表 l 的头节点 head ,单链表 l 表示为: l0 → l1 → … → ln-1

给定一个单链表 l 的头节点 head ,单链表 l 表示为: l0 → l1 → … → ln-1 → l

给定一个单链表 L 的头节点 head ,单链表 L 表示为:

L0 → L1 → … → Ln - 1 → Ln
请将其重新排列后变为:

L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → …
不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

示例 1:

输入:head = [1,2,3,4]
输出:[1,4,2,3]
示例 2:

输入:head = [1,2,3,4,5]
输出:[1,5,2,4,3]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reorder-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

  1. class Solution {
  2. public:
  3. void reorderList(ListNode *head) {
  4. if (head == nullptr) {
  5. return;
  6. }
  7. vector<ListNode *> vec;
  8. ListNode *node = head;
  9. while (node != nullptr) {
  10. vec.emplace_back(node);
  11. node = node->next;
  12. }
  13. int i = 0, j = vec.size() - 1;
  14. while (i < j) {
  15. vec[i]->next = vec[j];
  16. i++;
  17. if (i == j) {
  18. break;
  19. }
  20. vec[j]->next = vec[i];
  21. j--;
  22. }
  23. vec[i]->next = nullptr;
  24. }
  25. };
  26. 作者:LeetCode-Solution
  27. 链接:https://leetcode-cn.com/problems/reorder-list/solution/zhong-pai-lian-biao-by-leetcode-solution/
  28. 来源:力扣(LeetCode)
  29. 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/226627
推荐阅读
相关标签
  

闽ICP备14008679号