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

LeeCode 143. 重排链表

给定一个单链表 L 的头节点 head ,单链表 L 表示为:

L0 → L1 → … → Ln - 1 → Ln

请将其重新排列后变为:

L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → …

不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

示例 1:

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

示例 2:

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

提示:

  • 链表的长度范围为 [1, 5 * 104]
  • 1 <= node.val <= 1000

答案&测试代码:

void testLeeCode143() { // LeeCode 143.重排链表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:void reorderList(ListNode* head) { // LeeCode 143.重排链表if (!head) return;if (!(head->next)) return;vector<ListNode*> vec;for (ListNode *p = head; p;) {vec.emplace_back(p);ListNode *next = p->next;p->next = nullptr;p = next;}head = vec[0];vec.erase(vec.begin() + 0); // 删除指定索引处元素head->next = vec.back(); // 获取最后一个元素vec.erase(vec.begin() + vec.size() - 1);ListNode *last = head->next;for (;vec.size() > 0;) {ListNode *first = vec[0];last->next = first;last = first;vec.erase(vec.begin() + 0);if (vec.size() > 0) {ListNode *back = vec.back();last->next = back;last = back;vec.erase(vec.begin() + vec.size() - 1);}}}};// 测试代码:ListNode node1 = ListNode(1);ListNode node2 = ListNode(2);ListNode node3 = ListNode(3);ListNode node4 = ListNode(4);node1.next = &node2;node2.next = &node3;node3.next = &node4;Solution solution;solution.reorderList(&node1);// 打印链表std::cout << "链表:";for (ListNode *p = &node1; p; p = p->next) {std::cout << p->val << " ";}std::cout << endl;
}

打印:

ok. 提交到LeeCode:

ok. 

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

相关文章:

  • 1024节日?
  • 云图-地基云图-云层分割
  • 网上做论文的网站c网站开发
  • 递归|模拟
  • 站长之家统计广告设计制作税率
  • Linux环境下编译C语言使用libpq连接瀚高数据库
  • 门户网站排行榜seo实战密码第四版电子书
  • 购物网站哪个好电商网站营销
  • HBase基础命令详解
  • 租好服务器咋做网站呢网页设计与网站制作视频教程
  • 上海网站制作网络推广方法网站优化塔山双喜
  • 学习如何用 C++ 写一个线程安全的单例模式
  • 使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 21--PO(POM) 设计模式代码实现和全局浏览器驱动设置
  • 旋转花键如何实现微米级定位误差控制?
  • 提供手机自适应网站公司用易语言做钓鱼网站
  • 网站后台是怎么更新跨境电商平台有哪些特点
  • UVa 12991 Game Rooms
  • 2012年下半年试题一:论基于架构的软件设计方法及应用
  • 7. Python 列表:从概念本质到实战应用
  • Windows 安装 postGreSQL 数据库
  • 双堆法求数据流的中位数
  • 平面设计师灵感网站开发三味
  • 使用Requests和正则表达式实现起点中文网小说爬取
  • 擅自使用他人产品做网站宣传网站后台编辑器上传不了图片
  • argocd发布实现预检和后检能力
  • 受欢迎的免费网站建设游戏开发和网站开发哪个好玩
  • 网站建设 软件开发的公司办公网站模板
  • 内蒙古知名网站建设wordpress 摄影博客
  • 掌握 Gemini CLI:自定义命令 (Slash Commands)
  • 平面设计师常用网站铁岭网站建设公司