当前位置:   article > 正文

leetcode刷题笔记(Golang)--143. Reorder List_python输入某只股票的价格信息。如果选择了正确的买入和卖出时段

python输入某只股票的价格信息。如果选择了正确的买入和卖出时段

143. Reorder List

Given a singly linked list L: L0→L1→…→Ln-1→Ln,
reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→…

You may not modify the values in the list’s nodes, only nodes itself may be changed.

Example 1:

Given 1->2->3->4, reorder it to 1->4->2->3.
Example 2:

Given 1->2->3->4->5, reorder it to 1->5->2->4->3.

计划是遍历 反转 插入,这个顺序去做,时间复杂度基本就是O(n)了

func reorderList(head *ListNode)  {
	if head == nil || head.Next == nil {
		return
	}
	fast, slow := head, head
	for fast.Next != nil && fast.Next.Next != nil {
		fast = fast.Next.Next
		slow = slow.Next
	}
	mid := slow.Next
	slow.Next = nil
	tail := mid
	var preNode *ListNode = nil
	for tail != nil {
		n := tail.Next
		tail.Next = preNode
		preNode = tail
		tail = n
	}
	//reverse
	for head != nil && preNode != nil {
		n := head.Next
		head.Next = preNode
        preNode = preNode.Next
		head.Next.Next = n
		head = n
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/658223
推荐阅读
相关标签
  

闽ICP备14008679号