File tree Expand file tree Collapse file tree 1 file changed +80
-3
lines changed Expand file tree Collapse file tree 1 file changed +80
-3
lines changed Original file line number Diff line number Diff 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+ // 方法三 分割链表
343420func reorderList (head *ListNode ) {
344421 var slow =head
345422 var fast =head
You can’t perform that action at this time.
0 commit comments