题解 | #反转链表#
https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca
方法一:构造链表
如果此类型的题出现在笔试中,如果内存要求不高,可以采用如下方法:
可以先用一个slice将单链表的指针都存起来,然后再构造链表。
此方法简单易懂,代码好些。
###代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
package main
import . "nc_tools" import "fmt" /* * type ListNode struct{ * Val int * Next *ListNode * } */ /** * * @param pHead ListNode类 * @return ListNode类 */ func ReverseList( pHead *ListNode ) *ListNode { alldata:=make([]*ListNode,0) current := pHead // write code here for ;current!=nil;{ fmt.Println(current.Val) alldata=append(alldata,current) current=current.Next } var tmp *ListNode for i:=0;i<len(alldata);i++{ oneNode:=alldata[i] preNode:=tmp tmp=oneNode tmp.Next=preNode } return tmp } |
时间复杂度:O(n)
空间复杂度:O(n), 用了一个slice来存单链表