题解 | #反转链表#

反转链表

https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca

假设单链表为如下: alt 解题思路:使用头插法,遍历链表的同时进行头插。

​ 我们先定义两个指针 cur 和 curNext,cur表示当前遍历位置的节点,curNext表示cur的下一个节点,cur从head开始。

首先将head置为null,代表链表末尾节点的next。 alt 然后从cur开始进行头插,让cur.next = head; head = cur,注意一定要将curNext赋值,不然就会丢失后面的节点。

实现代码:

public ListNode reverseList(ListNode head) {
    if (null == head) return null; // 判断空链表

    ListNode cur = head; // 从head开始
    head = null; // 将head置为null
    while (null != cur) { // 遍历整个链表
        ListNode curNext = cur.next; // 先保存cur后面的子链表
        cur.next = head; // 头插
        head = cur;
        cur = curNext;
    }

    return head;
}

​ 时间复杂度O(N):N为单链表的长度,需要遍历每个节点一次。

​ 空间复杂度O(1):使用几个常量大小的临时变量。

#面试题打卡学习#
全部评论

相关推荐

04-15 23:42
中山大学 Java
ResourceUtilization:过几天楼主就会捧着一堆offer来问牛友们该怎么选辣
点赞 评论 收藏
分享
野猪不是猪🐗:现在的环境就是这样,供远大于求。 以前卡学历,现在最高学历不够卡了,还要卡第一学历。 还是不够筛,于是还要求得有实习、不能有gap等等... 可能这个岗位总共就一个hc,筛到最后还是有十几个人满足这些要求。他们都非常优秀,各方面都很棒。 那没办法了,看那个顺眼选哪个呗。 很残酷,也很现实
点赞 评论 收藏
分享
不像现在的我,已经是虚伪的社会人了。
真烦好烦真烦:好有个性的一段话,导师没有让你修改吗
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务