zoukankan      html  css  js  c++  java
  • LeetCode328----奇偶链表

    给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。

    请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes为节点总数。

    示例:

    输入: 1->2->3->4->5->NULL 
    输出: 1->3->5->2->4->NULL
    

    说明:

    • 应当保持奇数节点和偶数节点的相对顺序。
    • 链表的第一个节点视为奇数节点,第二个节点视为偶数节点,以此类推。

    代码如下:

    public class MyLeetCode328 {
    	static class ListNode {
    		int val;
    		ListNode next;
    
    		ListNode(int x) {
    			val = x;
    			next = null;
    		}
    	}
    
    	public ListNode oddEvenList(ListNode head) {
    		if (head == null || head.next == null) {
    			return head;
    		}
    		ListNode oddNode = head;
    		ListNode evenNode = head.next;
    		ListNode evenTemp = evenNode;
    		ListNode cur = evenNode.next;
    		int index = 3;
    		while (cur != null) {
    			if (index % 2 == 0) {
    				evenNode.next = cur;
    				evenNode = evenNode.next;
    			} else {
    				oddNode.next = cur;
    				oddNode = oddNode.next;
    			}
    			cur = cur.next;
    			index++;
    		}
    		evenNode.next = null;
    		oddNode.next = evenTemp;
    		return head;
    	}
    }
    

      引用关系比较繁琐,要注意!

  • 相关阅读:
    mac下mysql忘记了密码怎么办
    图片标签的四种路径
    三栏布局
    MongoDB学习笔记
    mysql B+ 树
    移动终端设备ID
    前端基础HTML以及常用的标签
    python--os模块
    python--基本数据 类型
    python基础3、4---流程控制、运算符
  • 原文地址:https://www.cnblogs.com/Booker808-java/p/9092461.html
Copyright © 2011-2022 走看看