leetcode刷题笔记(Golang)--328. Odd Even Linked List

不打扰是莪最后的温柔 提交于 2020-03-07 01:29:15
  1. Odd Even Linked List
    Given a singly linked list, group all odd nodes together followed by the even nodes. Please note here we are talking about the node number and not the value in the nodes.

You should try to do it in place. The program should run in O(1) space complexity and O(nodes) time complexity.

Example 1:

Input: 1->2->3->4->5->NULL
Output: 1->3->5->2->4->NULL
Example 2:

Input: 2->1->3->5->6->4->7->NULL
Output: 2->3->6->7->1->5->4->NULL
Note:

The relative order inside both the even and odd groups should remain as it was in the input.
The first node is considered odd, the second node even and so on …

/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func oddEvenList(head *ListNode) *ListNode {
	if head == nil || head.Next == nil {
		return head
	}
	dummy := &ListNode{Val: 0}
	even := &ListNode{Val: 0}
	dummy.Next = even
    curr := head
	for curr != nil && curr.Next != nil {
		even.Next = curr.Next
		even = even.Next
		curr.Next = curr.Next.Next
        if curr.Next== nil {
            break
        }
        curr = curr.Next
	}
	even.Next = nil
    curr.Next = dummy.Next.Next
	return head    
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!