博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【链表】奇偶链表
阅读量:4095 次
发布时间:2019-05-25

本文共 2188 字,大约阅读时间需要 7 分钟。

一、题目

力扣原题:

二、额外开辟空间

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */class Solution {    public ListNode oddEvenList(ListNode head) {        if (null == head) {            return null;        }        // 保存奇数节点        List
oddNodes = new ArrayList<>(); ListNode odd = head; while (null != odd) { oddNodes.add(odd); if (null == odd.next) { break; } odd = odd.next.next; } // 保存偶数节点 List
evenNodes = new ArrayList<>(); ListNode even = head.next; while (null != even) { evenNodes.add(even); if (null == even.next) { break; } even = even.next.next; } ListNode root = new ListNode(-1); ListNode cur = root; for (ListNode oddNode : oddNodes) { cur.next = new ListNode(oddNode.val); cur = cur.next; } for (ListNode evenNode : evenNodes) { cur.next = new ListNode(evenNode.val); cur = cur.next; } return root.next; }}
  • 时间复杂度:O(n)
  • 空间复杂度:O(n)

三、双指针

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */class Solution {    public ListNode oddEvenList(ListNode head) {        if (null == head) {            return null;        }        // 奇数节点        ListNode odd = head;        // 偶数节点        ListNode even = head.next;        // 保存头节点        ListNode oddRoot = odd;        ListNode evenRoot = even;        while (null != even) {            // 计算并连接下一个奇数节点            ListNode nextOdd = even.next;            odd.next = nextOdd;            // 计算并连接下一个偶数节点            if (null != even.next) {                ListNode nextEven = even.next.next;                even.next = nextEven;            }            // 连接链表            if (null != odd.next) {                odd = odd.next;            }            odd.next = evenRoot;            even = even.next;        }        return oddRoot;    }}
  • 时间复杂度:O(n)
  • 空间复杂度:O(1)

 

转载地址:http://knaii.baihongyu.com/

你可能感兴趣的文章
【JAVA数据结构】先进先出队列
查看>>
谈谈加密和混淆吧[转]
查看>>
乘法逆元
查看>>
Objective-C 基础入门(一)
查看>>
关于fwrite写入文件后打开查看是乱码的问题
查看>>
用结构体指针前必须要用malloc,不然会出现段错误
查看>>
Linux系统中的美
查看>>
一些实战项目(linux应用层编程,多线程编程,网络编程)
查看>>
STM32CubeMX 真的不要太好用
查看>>
不要买铝合金机架的无人机,不耐摔,易变形弯曲。
查看>>
ACfly也是基于FreeRTOS的
查看>>
ROS的安装(包含文字和视频教程,我的ROS安装教程以这篇为准)
查看>>
原来我之前一直用的APM固件....现在很多东西明白了。
查看>>
realsense-ros里里程计相关代码
查看>>
似乎写个ROS功能包并不难,你会订阅话题发布话题,加点逻辑处理,就可以写一些基础的ROS功能包了。
查看>>
我觉得在室内弄无人机开发装个防撞机架还是很有必要的,TBUS就做得很好。
查看>>
serial也是见到很多次了,似乎它就是一种串行通信协议
查看>>
TBUS的一些信息
查看>>
专业和业余的区别就在于你在基础在基本功打磨练习花的时间
查看>>
通过mavlink实现自主航线的过程笔记
查看>>