LeetCode //C - 328. Odd Even Linked List

328. Odd Even Linked List

Given the head of a singly linked list, group all the nodes with odd indices together followed by the nodes with even indices, and return the reordered list.

The first node is considered odd, and the second node is even, and so on.

Note that the relative order inside both the even and odd groups should remain as it was in the input.

You must solve the problem in O(1) extra space complexity and O(n) time complexity.
 

Example 1:

在这里插入图片描述

Input head = [1,2,3,4,5]
Output [1,3,5,2,4]

Example 2:

在这里插入图片描述

Input head = [2,1,3,5,6,4,7]
Output [2,3,6,7,1,5,4]

Constraints:
  • The number of nodes in the linked list is in the range [ 0 , 1 0 4 ] [0, 10^4] [0,104].
  • − 1 0 6 < = N o d e . v a l < = 1 0 6 -10^6 <= Node.val <= 10^6 106<=Node.val<=106

From: LeetCode
Link: 328. Odd Even Linked List


Solution:

Ideas:

This function works by first checking if the head is NULL. If it’s not, it creates two pointers, odd and even, which point to the first and second nodes of the list, respectively. evenHead stores the head of the even list.

The loop continues until there are no more even nodes or even nodes with a next node. Inside the loop, the odd nodes are connected to the next odd node, and similarly, the even nodes are connected to the next even node. After the end of the loop, the odd list and the even list are connected.

The final list starts with the odd nodes followed by the even nodes, as shown in your images.

Code:
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* oddEvenList(struct ListNode* head) {
   
    if (head == NULL) return NULL;
    
    struct ListNode *odd = head;
    struct ListNode *even = head->next;
    struct ListNode *evenHead = even;

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

相关推荐

  1. leetcode328-Odd Even Linked List

    2024-01-11 15:26:04       20 阅读
  2. Autosar MCAL-S32k324 Crypto配置-基于EB

    2024-01-11 15:26:04       16 阅读
  3. LC322. 零钱兑换

    2024-01-11 15:26:04       30 阅读
  4. leetcode-322. 零钱兑换

    2024-01-11 15:26:04       28 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-11 15:26:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-11 15:26:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-11 15:26:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-11 15:26:04       20 阅读

热门阅读

  1. 【Unity】空引用处理方法总结

    2024-01-11 15:26:04       36 阅读
  2. FlinkRestAPI

    2024-01-11 15:26:04       33 阅读
  3. Elasticsearch安装IK分词器踩坑记录

    2024-01-11 15:26:04       39 阅读
  4. 【Linux】journalctl和dmesg日志的区别

    2024-01-11 15:26:04       34 阅读
  5. c++ 正则化

    2024-01-11 15:26:04       25 阅读
  6. PyTorch项目源码学习(1)

    2024-01-11 15:26:04       40 阅读
  7. Vue怎么设置自定义指令

    2024-01-11 15:26:04       33 阅读
  8. Vue组件

    Vue组件

    2024-01-11 15:26:04      39 阅读
  9. PHP对象设计(《深入PHP》第六章内容笔记)

    2024-01-11 15:26:04       42 阅读
  10. Vue3的 响应式数据

    2024-01-11 15:26:04       34 阅读
  11. 金三银四-JVM核心知识高频面试题

    2024-01-11 15:26:04       31 阅读
  12. Leetcode 437. Path Sum III (二叉树遍历好题)

    2024-01-11 15:26:04       32 阅读
  13. 【响应式编程】前置知识和相关技术的总结

    2024-01-11 15:26:04       33 阅读