题解 | #反转链表#

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来存单链表

全部评论

相关推荐

无一技之长怎么办:别去右边,售前,实施,需求分析一起,这是把人当牛马用啊,快跑,这些岗位天花板很低的
点赞 评论 收藏
分享
穿件外套出门:这简历一眼太水了,前面有的没的直接删,写项目亮点
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务