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

【LeetCode100】--- 101.重排链表【思维导图+复习回顾】

题目传送门

方法一:(原地修改

题目要求原地修改(不创建新链表节点,直接调整指针)进行合并链表

class Solution {public void reorderList(ListNode head) {if(head == null || head.next == null){return;}ListNode slow = head;ListNode fast = head;
//寻找链表中心节点while(fast.next != null && fast.next.next != null){slow = slow.next;fast = fast.next.next;}ListNode head2 = reverseList(slow.next);slow.next = null;ListNode dummy = new ListNode(0);ListNode prev = dummy;boolean flag = true;ListNode h1 = head;ListNode h2 = head2;
//合并链表while(h1 != null && h2 != null){ListNode next1 = h1.next; // 保存h1的下一个节点ListNode next2 = h2.next; // 保存h2的下一个节点h1.next = h2; // h1连接h2h2.next = next1; // h2连接h1的原下一个节点h1 = next1; // 移动h1指针h2 = next2; // 移动h2指针}}
//反转链表public ListNode reverseList(ListNode slow){ListNode dummy = new ListNode(0);ListNode prev = dummy;while(slow != null){ListNode next = slow.next;slow.next = prev.next;prev.next = slow;slow = next;}return prev.next;}
}

方法二:(新建链表合并链表)

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public void reorderList(ListNode head) {if(head == null || head.next == null){return;}ListNode slow = head;ListNode fast = head;while(fast.next != null && fast.next.next != null){slow = slow.next;fast = fast.next.next;}ListNode head2 = reverseList(slow.next);slow.next = null;ListNode dummy = new ListNode(0);ListNode prev = dummy;boolean flag = true;ListNode h1 = head;ListNode h2 = head2;while(h1 != null || h2 != null){if(flag == true && h1 != null){prev.next = new ListNode(h1.val);h1 = h1.next;prev = prev.next;flag = false;}else if(h2 != null){prev.next = new ListNode(h2.val);h2 = h2.next;prev = prev.next;flag = true;}}//head = dummy.next;这样不对是因为//两个引用彻底指向不同对象,修改head的指向和originalHead无关head.next = dummy.next.next;}public ListNode reverseList(ListNode slow){ListNode dummy = new ListNode(0);ListNode prev = dummy;while(slow != null){ListNode next = slow.next;slow.next = prev.next;prev.next = slow;slow = next;}return prev.next;}
}

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

相关文章:

  • 【C++:继承】C++面向对象继承全面解析:派生类构造、多继承、菱形虚拟继承与设计模式实践
  • LeetCode 面试经典 150_链表_反转链表 II(60_92_C++_中等)(头插法)
  • 第 08 天:编辑器和终端快捷键 (nano, vi/vim)
  • 读取文件夹内的pdf装换成npg给vlm分类人工确认然后填入excel vlmapi速度挺快 qwen3-vl-plus webbrowser.open
  • 主流 AI IDE 之一的 CodeBuddy IDE 介绍
  • 展示型网站制作公司做网站好的网站建设公司哪家好
  • MySQL 大表查询优化、超大分页处理、SQL 慢查询优化、主键选择
  • Unity公共Mono模块:非继承脚本也能更新
  • 使用 Flownex 对发电厂周期进行建模
  • 前端基础:JS基础语法
  • 中山网站建设的企业深圳哪些公司做网站
  • 网站 验收访问的网页正在升级中
  • 29-机器学习与大模型开发数学教程-3-3 张量的运算(Einstein求和约定)
  • 天猫网站建设的优势有哪些室内装修3d动态演示效果图
  • 如何提升网站的搜索排名专业外贸网站建设公司价格
  • 【GESP】C++四级真题 luogu-B4361 [GESP202506 四级] 排序
  • 出版社类网站模板手机商城网站源码
  • 旅游网站建设实施方案湖南建筑工程集团
  • 投资融资理财网站模板如何网站专题策划
  • 淄博网站制作优化安装百度到手机桌面
  • 江苏和住房建设厅网站东莞樟木头网站建设公司
  • 内蒙古工程建设招投标中心网站网站编辑适不适合男生做
  • 网站开发的经费预算跨境电商是干嘛的
  • 高端网站定制设计公司果蔬网站规划建设方案
  • 网站开发怎么接入支付宝app管理系统
  • 如何查看网站权重百度下载安装app
  • 甜点网站要怎么做温州网页设计培训学校
  • 谷歌seo网站怎么做产品分类网站虚拟空间购买
  • wordpress全站伪静态电商网站合作
  • 寿光公司做网站wordpress 建网站 vpn