重新排序
1、題目
2、解題1
申請空間解法
package main
import . "nc_tools"
/*
* type ListNode struct{
* Val int
* Next *ListNode
* }
*/
/**
*
* @param head ListNode類
* @return void
*/
func reorderList( head *ListNode ) {
// write code here
if head == nil{
return
}
var stk []*ListNode
var tmp *ListNode
tmp = head
for tmp != nil{
tmp2 := tmp.Next
tmp.Next = nil
stk = append(stk, tmp)
tmp = tmp2
}
i := len(stk)-1
j := 0
for j<i{
stk[j].Next = stk[i]
if j+1 == i{
break
}
stk[i].Next = stk[j+1]
i--
j++
}
head = stk[0]
return
}
3、解題2
不申請空間解法
package main
import . "nc_tools"
/*
* type ListNode struct{
* Val int
* Next *ListNode
* }
*/
/**
*
* @param head ListNode類
* @return void
*/
func reorderList( head *ListNode ) {
// write code here
if head == nil{
return
}
//獲取長度
nodeLen := 0
tmp := head
for tmp != nil{
nodeLen++
tmp = tmp.Next
}
//截斷
tmp = head
for i:= 0;i< (nodeLen-1)/2;i++{
tmp = tmp.Next
}
head1 := head
head2 := tmp.Next
tmp.Next = nil
//翻轉
var first *ListNode
var second *ListNode
var third *ListNode
first = nil
second = head2
for second != nil{
third = second.Next
second.Next = first
first = second
second = third
}
//合併
head2 = first
for head1 != nil && head2 != nil{
tmp = head1.Next
tmp2 := head2.Next
head1.Next = head2
head2.Next = tmp
head1 = tmp
head2 = tmp2
}
}
相關文章
- dhtmlxGantt如何重新排序任務教程HTML排序
- 如何在dhtmlxGantt網格中對任務進行排序和重新排序HTML排序
- 多維陣列按鍵名進行重新排序陣列排序
- mysql資料庫,讓不連續的id重新排序MySql資料庫排序
- 排序:氣泡排序&快速排序排序
- php插入排序,快速排序,歸併排序,堆排序PHP排序
- 【排序】插入類排序—(折半)插入排序、希爾排序排序
- 排序演算法(氣泡排序,選擇排序,插入排序,希爾排序)排序演算法
- 排序——氣泡排序排序
- 排序之快速排序排序
- 插入排序排序排序
- 排序之交換排序排序
- PHP 常見4種排序 氣泡排序、選擇排序、插入排序、快速排序PHP排序
- 查詢列表連結串列加排序 每次重新整理順序都不同是什麼情況?排序
- Python八大演算法的實現,插入排序、希爾排序、氣泡排序、快速排序、直接選擇排序、堆排序、歸併排序、基數排序。Python演算法排序
- 快速排序&&歸併排序排序
- 計數排序vs基數排序vs桶排序排序
- 非交換排序-計數排序和桶排序排序
- 排序演算法 - 氣泡排序和選擇排序排序演算法
- 氣泡排序、歸併排序與快速排序比較排序
- Java排序之計數排序Java排序
- 排序演算法__桶排序排序演算法
- 排序演算法__快速排序排序演算法
- 排序演算法__堆排序排序演算法
- 排序演算法:快速排序排序演算法
- 桶排序和基數排序排序
- 排序演算法 - 堆排序排序演算法
- 選擇排序和快速排序排序
- 排序演算法-堆排序排序演算法
- 四、歸併排序 && 快速排序排序
- 排序演算法 - 快速排序排序演算法
- 【JS面試向】選擇排序、桶排序、氣泡排序和快速排序簡介JS面試排序
- 排序演算法 - 快速插入排序和希爾排序排序演算法
- php實現 氣泡排序,插入排序,選擇排序PHP排序
- 排序排序
- Oracle 中,根據狀態欄位進行自定義排序例(待驗證、待維修、重新維修)Oracle排序
- 經常提及的幾個js排序方法(氣泡排序、選擇排序、計數排序)JS排序
- 演算法之常見排序演算法-氣泡排序、歸併排序、快速排序演算法排序