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

【百日算法计划】:每日一题,见证成长(014)

题目

奇偶链表

给定一个单链表,把所有的奇数节点和偶数节点分别排在一起
示例:
输入: 2->1->3->5->6->4->7->NULL
输出: 2->3->6->7->1->5->4->NULL

思路

  • 构建两个结果链表,分别存储奇偶节点

  • 使用一个辅助变量用来判断奇偶节点

  • 把奇链表的尾指向偶链表的头

public ListNode oddEvenList1(ListNode head) {

    if (head == null) return null;

    ListNode oddList = new ListNode(); //存储奇数节点的结果链表
    ListNode oddTail = oddList;

    ListNode evenList = new ListNode(); //存储偶数节点的结果链表
    ListNode evenTail = evenList;

    int count = 1; //用来判断奇偶的辅助变量

    ListNode p = head;
    while (p != null){
        ListNode tmp = p.next;
        if (count % 2 == 1){
            p.next = null;
            oddTail.next = p;
            oddTail = p;
        } else {
            p.next = null;
            evenTail.next = p;
            evenTail = p;
        }
        count++;
        p = tmp;
    }
    //把奇链表的尾指向偶链表的头
    oddTail.next = evenList.next;
    return oddList.next;
}

http://www.kler.cn/a/308258.html

相关文章:

  • 在 CentOS 系统中,您可以使用多种工具来查看网络速度和流量
  • java的JJWT 0.91在jdk21中报错的解决方法
  • 三周精通FastAPI:37 包含 WSGI - Flask,Django,Pyramid 以及其它
  • 阿里云通义大模型团队开源Qwen2.5-Coder:AI编程新纪元
  • 大厂的 404 页面都长啥样?看看你都见过吗~~~
  • TortoiseSVN提示服务器凭证检核错误:站点名称不符
  • 【SQL Server】清除日志文件ERRORLOG、tempdb.mdf
  • 如何快准稳 实现MySQL大表历史数据迁移?
  • linux文件系统权限详解
  • 服务器——装新的CUDA版本的方法
  • Web:HTTP包的相关操作
  • RocksDB系列一:基本概念
  • flink实战--如何基于java-agent技术增强Flink功能
  • 【Hot100】LeetCode—4. 寻找两个正序数组的中位数
  • 简单易懂的变动率指标ROC,做短线的快来了解一下
  • 超链接/表格/表单的复习(课后作业)
  • 蓝桥杯DS18B20程序源码
  • 【数据结构】4——树和森林
  • Mastering openFrameworks_第十一章_网络
  • 身份识别与服装类型检测系统源码分享
  • 基于微信小程序图书馆自习室座位预约小程序
  • USB组合设备——串口+鼠标+键盘
  • WPS生成目录
  • OpengGL教程(六)---坐标的变换和坐标系的变换
  • 文献多\bibliographystyle和文献少\begin{thebibliography}
  • 【JAVA】数据脱敏技术(对称加密算法、非对称加密算法、哈希算法、消息认证码(MAC)算法、密钥交换算法)使用方法