题解 | #链表的奇偶重排#

链表的奇偶重排

http://www.nowcoder.com/practice/02bf49ea45cd486daa031614f9bd6fc3

时间复杂度O(n),空间复杂度O(1)

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 *	ListNode(int x) : val(x), next(nullptr) {}
 * };
 */
class Solution {
public:
    // 先奇后偶
    ListNode* oddEvenList(ListNode* head) {
      if (head == nullptr || head->next == nullptr) {
        return head;
      }
      
      ListNode *odd_head = head, *even_head = head->next, *cur = head->next->next;
      odd_head->next = even_head->next = nullptr;
      ListNode *odd = odd_head, *even = even_head;
      int index = 1;
      
      while (cur) {
        ListNode *tmp = cur->next;
        cur->next = nullptr;
        if (index % 2) {
          odd->next = cur;
          odd = odd->next;
        } else {
          even->next = cur;
          even = even->next;
        }
        index++;
        cur = tmp;
      }
      
      odd->next = even_head;
      
      return odd_head;
    }
};
全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 15:45
点赞 评论 收藏
分享
不懂!!!:感觉你的项目描述太简单了,建议使用star描述法优化提炼一下,就是使用什么技术或方案解决了什么问题,有什么效果或成果,例如:对axios进行了二次封装,实现了请求的统一管理、错误的集中处理以及接口调用的简化,显著提高了开发效率和代码维护性,使用canvas技术实现了路线绘制功能,通过定义路径绘制函数和动态更新机制,满足了简化的导航可视化需求,提升了用户体验。像什么是使用其他组件库,基本功能描述就最好不要写到项目成果里面去了,加油
点赞 评论 收藏
分享
03-07 13:32
门头沟学院 C++
D0cC:你是本科生吗,太厉害了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务