如何解决如何在最后一个节点中使“奇数偶数LinkedList”成为可能? 看起来不错!差不多了!
我正在尝试一个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
。可以始终使用其他样式。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。