leetcode328-Odd Even Linked List

题目

给定单链表的头节点 head ,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。
第一个节点的索引被认为是 奇数 , 第二个节点的索引为 偶数 ,以此类推。
请注意,偶数组和奇数组内部的相对顺序应该与输入时保持一致。
你必须在 O(1) 的额外空间复杂度和 O(n) 的时间复杂度下解决这个问题。
示例 1:
输入: head = [1,2,3,4,5]
输出: [1,3,5,2,4]

分析

我们可以用俩个指针永远指向最新的奇数和偶数,不断把偶数后面的奇数插入到奇数后面,然后更新分别指向奇数和偶数的指针

public class LinkNode {
	int val;
	LinkNode next;

	public LinkNode(int data) {
		this.val = data;
		this.next = null;
	}
}
public class LinkList {
	LinkNode head;
	public LinkList() {
		this.head = null;
	}
	public LinkNode getHead() {
		return this.head;
	}
	//添加元素
	public void addNode(int data) {
		LinkNode node = new LinkNode(data);
		if (this.head == null) {
			this.head = node;
		} else {
			LinkNode cur = this.head;
			while(cur.next != null) {
				cur = cur.next;
			}
			cur.next = node;
		}
	}
	//正序打印
	public void print(LinkNode node) {
		while(node != null) {
			System.out.print(node.val);
			System.out.print(" ");
			node = node.next;
		}
		System.out.println();
	}
	public void oddEvenList() {
		LinkNode p =this.head;
		if(p == null) {
			return;
		}
		LinkNode pre = this.head;
		LinkNode cur = this.head.next;
		while(cur != null && cur.next != null) {
			LinkNode next = cur.next;
			cur.next = next.next;
			next.next = pre.next;
			pre.next = next;
			pre = pre.next;
			cur = cur.next;
		}
		print(this.head);
	}
}

public class oddEvenLinkedList {
	public static void main(String[] args) {
		LinkList list = new LinkList();
		list.addNode(2);
		list.addNode(1);
		list.addNode(3);
		list.addNode(5);
		list.addNode(6);
		list.addNode(4);
		list.addNode(7);
		list.oddEvenList();
	}
}

相关推荐

  1. leetcode-322. 零钱兑换

    2024-05-26 06:50:11       52 阅读
  2. leetcode 322.零钱兑换

    2024-05-26 06:50:11       47 阅读
  3. Leetcode 3128. Right Triangles

    2024-05-26 06:50:11       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-26 06:50:11       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-26 06:50:11       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-26 06:50:11       87 阅读
  4. Python语言-面向对象

    2024-05-26 06:50:11       96 阅读

热门阅读

  1. C 语言设计模式(结构型)

    2024-05-26 06:50:11       45 阅读
  2. v-if 与 v-show(vue3条件渲染)

    2024-05-26 06:50:11       51 阅读
  3. kafka防止消息丢失配置

    2024-05-26 06:50:11       48 阅读
  4. Git 基础使用(4)标签管理

    2024-05-26 06:50:11       39 阅读
  5. Python库之lxml的简介、安装、使用方法详细攻略

    2024-05-26 06:50:11       41 阅读
  6. [AIGC] CompletableFuture如何实现任务链式调用?

    2024-05-26 06:50:11       35 阅读
  7. HLS入门

    HLS入门

    2024-05-26 06:50:11      37 阅读
  8. 前端调用浏览器录音功能且生成文件(vue)

    2024-05-26 06:50:11       34 阅读
  9. H3CNE-5-IP子网划分(二)

    2024-05-26 06:50:11       33 阅读