c++ - 如何在最后一个节点中使奇数偶数LinkedList因子?

标签 c++ c++11

我正在尝试一个leetcode问题328。奇数甚至是链表。
我们需要重新排列下面的列表,以将所有奇数节点放在一起,将偶数节点放在一起。例如:

1->7->3->2->4
然后需要重新排列它们以将放置的奇数与奇数链接起来,然后在末尾添加偶数
1 3 4 7 2
但是我的问题是,当处理偶数个节点的列表时,它将最后一个偶数留在奇数的末尾
例如
5 7 4 3 9 8 2 1
我的代码将其重新排列为
5 4 9 2 1 7 3 8 
但答案应该是
5 4 9 2 7 3 8 1
我如何解决代码以将最后一个偶数视为偶数而不是奇数?
if (head->next == NULL || head->next->next == NULL)
      return head;

    ListNode *odd = head;
    ListNode *even = head->next;
    ListNode *evenHead = even;

    while (even != NULL && even->next != NULL){
      odd->next = even->next;
      odd = odd->next;
      even->next = odd->next;
      even = even->next;
    }
    odd->next = evenHead;
    return head;
}

最佳答案

看起来不错!差不多好了!

  • 这将通过:
  • // The following block might slightly improve the execution time;
    // Can be removed;
    static const auto __optimize__ = []() {
        std::ios::sync_with_stdio(false);
        std::cin.tie(nullptr);
        std::cout.tie(nullptr);
        return 0;
    }();
    
    
    static const struct Solution {
        ListNode* oddEvenList(ListNode* head) {
            if (!head) {
                return head;
            }
    
            ListNode* odd = head;
            ListNode* even_head = head->next;
            ListNode* even = even_head;
    
            while (even && even->next) {
                odd->next = odd->next->next;
                even->next = even->next->next;
                odd = odd->next;
                even = even->next;
            }
    
            odd->next = even_head;
    
            return head;
        }
    };
    
    
    
  • c++变量命名通常为 snake_case 。始终使用其他样式也是可以的。
  • 关于c++ - 如何在最后一个节点中使奇数偶数LinkedList因子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64442682/

    相关文章:

    c++ - 循环中分支预测的性能

    javascript - 用户控制从 c++ 到 javascript 的 Webassembly 访问调用

    c++ - 重载运算符 << 输出 bool 值。为什么?

    c++ - setter 方法中的 make_shared 行为类似于创建拷贝

    c++ - unique_ptr : How to safely share raw pointer

    c++ - Qt Ui 应用程序屏幕方向

    c++ - Zeromq:如何在 C++ 中访问 tcp 消息

    c++ - 在 C++ 中使用动态加载重新加载库

    c++ - 如何在我自己的 Vector 类中使用 Move 构造函数而不是 Move 赋值运算符?

    c++ - 修改和读取原子变量