当前位置: 首页 > news >正文

LeeCode 328. 奇偶链表

给定单链表的头节点 head ,将所有索引为奇数的节点和索引为偶数的节点分别分组,保持它们原有的相对顺序,然后把偶数索引节点分组连接到奇数索引节点分组之后,返回重新排序的链表。

第一个节点的索引被认为是 奇数 , 第二个节点的索引为 偶数 ,以此类推。

请注意,偶数组和奇数组内部的相对顺序应该与输入时保持一致。

你必须在 O(1) 的额外空间复杂度和 O(n) 的时间复杂度下解决这个问题。

示例 1:

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

示例 2:

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

提示:

  • n ==  链表中的节点数
  • 0 <= n <= 104
  • -106 <= Node.val <= 106

答案&测试代码:

void testLeeCode328(void) { // 奇偶链表struct ListNode {int val;ListNode* next;ListNode() : val(0), next(nullptr) {}ListNode(int x) : val(x), next(nullptr) {}ListNode(int x, ListNode* next) : val(x), next(next) {}};class Solution {public:ListNode* oddEvenList(ListNode* head) { // LeeCode328.奇偶链表if (!head) return nullptr;ListNode *odd = head;ListNode *even = head->next;if (!even) return odd;odd->next = nullptr; // 奇数链表和偶数链表先断开链接ListNode* oddLast = odd; // 奇数链表的最后一个节点ListNode* evenLast = even; // 偶数链表的最后一个节点ListNode* newHead = evenLast->next; // 剩余未排序的链表头节点evenLast->next = nullptr; // 剩余链表和前面断开联系bool currIsOdd = true; // 标识当前是否应该添加奇数链表for (;newHead;) {// 取出剩余链表的头节点ListNode* next = newHead->next;newHead->next = nullptr;// 头节点添加到已排序好的链表里if (currIsOdd) {oddLast->next = newHead;oddLast = newHead;}else {evenLast->next = newHead;evenLast = newHead;}currIsOdd = !currIsOdd;newHead = next;}oddLast->next = even;return odd;}};// testSolution solution;ListNode node1 = ListNode(1);ListNode node2 = ListNode(2);ListNode node3 = ListNode(3);ListNode node4 = ListNode(4);ListNode node5 = ListNode(5);node1.next = &node2;node2.next = &node3;node3.next = &node4;node4.next = &node5;ListNode *res = solution.oddEvenList(&node1);// 打印链表std::cout << "链表:";for (ListNode* p = res; p;p = p->next) {std::cout << p->val << " ";}std::cout << endl;
}

打印:

ok. 提交到LeeCode:

ok.

http://www.dtcms.com/a/435279.html

相关文章:

  • 【Linux CentOS 7 版本更换yum源】
  • ⚡ WSL2 搭建 s5p6818 Linux 嵌入式开发平台 (part 3):Wifi驱动移植、ssh移植、e2fsprogs移植
  • 建网站怎么弄在线制作app平台
  • 进程的概念(下)
  • 网站开发安装win10家庭版广告设计公司组织结构图
  • 自媒体时代做网站有前途吗网站备案审批号
  • 为何“过度工程”会发生
  • Linux多线程服务端编程:使用muduo C++网络库学习之环境配置
  • 新质生产力
  • 嵌入式八股文篇——P1 关键字篇
  • 河源正规网站建设价格广东省深圳市公司
  • Core Speech Kit简介
  • 【OTA专题】3.实现简单的boot和APP程序逻辑
  • 营销单页模板网站怎么买网站域名
  • 织梦做商城网站wordpress 自建邮件
  • 小江网站建设必须重视的问题之一
  • Bella Beauty WordPress Theme — Aesthetic Medical Clinic
  • Java_钻石操作符详解
  • 网站做qq微信微博登录爱做的小说网站
  • 大文件推送到git仓库
  • 对招聘网站页面设计做建议wordpress主题cute
  • Spring cloud快速入门
  • STM32 智能垃圾桶项目笔记(五):语音合成模块(SYN6288)配置与语音播报实现
  • 移动互联网开发应聘四川网站营销seo费用
  • 找北京赛车网站开发wordpress 自定义页面
  • MATLAB信号处理实用指南:从入门到精通
  • 成都住建局官网报名入口网址兴安盟seo
  • 中国建设银行手机网站下载安装托管的服务器如何做网站
  • P13977题解
  • 网络推广岗位职责和任职要求成都做整站优化