mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-06 15:09:40 +08:00
Merge pull request #2831 from markwang1992/143-reorderList
143.重排链表增加Go方法一和方法二
This commit is contained in:
@ -38,7 +38,7 @@ public:
|
||||
cur = head;
|
||||
int i = 1;
|
||||
int j = vec.size() - 1; // i j为之前前后的双指针
|
||||
int count = 0; // 计数,偶数去后面,奇数取前面
|
||||
int count = 0; // 计数,偶数取后面,奇数取前面
|
||||
while (i <= j) {
|
||||
if (count % 2 == 0) {
|
||||
cur->next = vec[j];
|
||||
@ -73,7 +73,7 @@ public:
|
||||
}
|
||||
|
||||
cur = head;
|
||||
int count = 0; // 计数,偶数去后面,奇数取前面
|
||||
int count = 0; // 计数,偶数取后面,奇数取前面
|
||||
ListNode* node;
|
||||
while(que.size()) {
|
||||
if (count % 2 == 0) {
|
||||
@ -338,8 +338,85 @@ class Solution:
|
||||
return pre
|
||||
```
|
||||
### Go
|
||||
|
||||
```go
|
||||
# 方法三 分割链表
|
||||
// 方法一 数组模拟
|
||||
/**
|
||||
* Definition for singly-linked list.
|
||||
* type ListNode struct {
|
||||
* Val int
|
||||
* Next *ListNode
|
||||
* }
|
||||
*/
|
||||
func reorderList(head *ListNode) {
|
||||
vec := make([]*ListNode, 0)
|
||||
cur := head
|
||||
if cur == nil {
|
||||
return
|
||||
}
|
||||
for cur != nil {
|
||||
vec = append(vec, cur)
|
||||
cur = cur.Next
|
||||
}
|
||||
cur = head
|
||||
i := 1
|
||||
j := len(vec) - 1 // i j为前后的双指针
|
||||
count := 0 // 计数,偶数取后面,奇数取前面
|
||||
for i <= j {
|
||||
if count % 2 == 0 {
|
||||
cur.Next = vec[j]
|
||||
j--
|
||||
} else {
|
||||
cur.Next = vec[i]
|
||||
i++
|
||||
}
|
||||
cur = cur.Next
|
||||
count++
|
||||
}
|
||||
cur.Next = nil // 注意结尾
|
||||
}
|
||||
```
|
||||
|
||||
```go
|
||||
// 方法二 双向队列模拟
|
||||
/**
|
||||
* Definition for singly-linked list.
|
||||
* type ListNode struct {
|
||||
* Val int
|
||||
* Next *ListNode
|
||||
* }
|
||||
*/
|
||||
func reorderList(head *ListNode) {
|
||||
que := make([]*ListNode, 0)
|
||||
cur := head
|
||||
if cur == nil {
|
||||
return
|
||||
}
|
||||
|
||||
for cur.Next != nil {
|
||||
que = append(que, cur.Next)
|
||||
cur = cur.Next
|
||||
}
|
||||
|
||||
cur = head
|
||||
count := 0 // 计数,偶数取后面,奇数取前面
|
||||
for len(que) > 0 {
|
||||
if count % 2 == 0 {
|
||||
cur.Next = que[len(que)-1]
|
||||
que = que[:len(que)-1]
|
||||
} else {
|
||||
cur.Next = que[0]
|
||||
que = que[1:]
|
||||
}
|
||||
count++
|
||||
cur = cur.Next
|
||||
}
|
||||
cur.Next = nil // 注意结尾
|
||||
}
|
||||
```
|
||||
|
||||
```go
|
||||
// 方法三 分割链表
|
||||
func reorderList(head *ListNode) {
|
||||
var slow=head
|
||||
var fast=head
|
||||
|
Reference in New Issue
Block a user