Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 50472c3

Browse files
143.重排链表增加Go方法一和方法二
1 parent d22464f commit 50472c3

File tree

1 file changed

+80
-3
lines changed

1 file changed

+80
-3
lines changed

‎problems/0143.重排链表.md‎

Lines changed: 80 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public:
3838
cur = head;
3939
int i = 1;
4040
int j = vec.size() - 1; // i j为之前前后的双指针
41-
int count = 0; // 计数,偶数去后面,奇数取前面
41+
int count = 0; // 计数,偶数取后面,奇数取前面
4242
while (i <= j) {
4343
if (count % 2 == 0) {
4444
cur->next = vec[j];
@@ -73,7 +73,7 @@ public:
7373
}
7474
7575
cur = head;
76-
int count = 0; // 计数,偶数去后面,奇数取前面
76+
int count = 0; // 计数,偶数取后面,奇数取前面
7777
ListNode* node;
7878
while(que.size()) {
7979
if (count % 2 == 0) {
@@ -338,8 +338,85 @@ class Solution:
338338
return pre
339339
```
340340
### Go
341+
342+
```go
343+
// 方法一 数组模拟
344+
/**
345+
* Definition for singly-linked list.
346+
* type ListNode struct {
347+
* Val int
348+
* Next *ListNode
349+
* }
350+
*/
351+
func reorderList(head *ListNode) {
352+
vec := make([]*ListNode, 0)
353+
cur := head
354+
if cur == nil {
355+
return
356+
}
357+
for cur != nil {
358+
vec = append(vec, cur)
359+
cur = cur.Next
360+
}
361+
cur = head
362+
i := 1
363+
j := len(vec) - 1 // i j为前后的双指针
364+
count := 0 // 计数,偶数取后面,奇数取前面
365+
for i <= j {
366+
if count % 2 == 0 {
367+
cur.Next = vec[j]
368+
j--
369+
} else {
370+
cur.Next = vec[i]
371+
i++
372+
}
373+
cur = cur.Next
374+
count++
375+
}
376+
cur.Next = nil // 注意结尾
377+
}
378+
```
379+
380+
```go
381+
// 方法二 双向队列模拟
382+
/**
383+
* Definition for singly-linked list.
384+
* type ListNode struct {
385+
* Val int
386+
* Next *ListNode
387+
* }
388+
*/
389+
func reorderList(head *ListNode) {
390+
que := make([]*ListNode, 0)
391+
cur := head
392+
if cur == nil {
393+
return
394+
}
395+
396+
for cur.Next != nil {
397+
que = append(que, cur.Next)
398+
cur = cur.Next
399+
}
400+
401+
cur = head
402+
count := 0 // 计数,偶数取后面,奇数取前面
403+
for len(que) > 0 {
404+
if count % 2 == 0 {
405+
cur.Next = que[len(que)-1]
406+
que = que[:len(que)-1]
407+
} else {
408+
cur.Next = que[0]
409+
que = que[1:]
410+
}
411+
count++
412+
cur = cur.Next
413+
}
414+
cur.Next = nil // 注意结尾
415+
}
416+
```
417+
341418
```go
342-
# 方法三 分割链表
419+
// 方法三 分割链表
343420
func reorderList(head *ListNode) {
344421
var slow=head
345422
var fast=head

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /