面试热题TOP1-反转链表

髣髴兮若轻云之蔽月,飘飖兮若流风之回雪。

一、题目描述

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

示例 1:

输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]

示例 2:

输入:head = [1,2]
输出:[2,1]

示例 3:

输入:head = []
输出:[]

提示:
链表中节点的数目范围是 [0, 5000]
-5000 <= Node.val <= 5000

二、思路分析:

  这道题的意思是反转整个链表,其实链表中元素的位置并不用动,只要将所有节点指向下一个节点的指针,指向自己的前方的节点就可以了,大家可以直接看代码,思路通过注释进行了详细的解释。

三、AC代码

class Solution {
    public ListNode reverseList(ListNode head) {
        if (head == null) {
            return head;
        }

        ListNode node = head;
        // 用于当作每个节点的前一个节点
        ListNode prev = null;

        while (node != null) {
            // 先存储每个节点的下一个节点 
            ListNode next = node.next;
            // 将指针指向前一个节点
            node.next = prev;
            // 将当前节点作为下一个节点的前置节点
            prev = node;
            // 往后移
            node = next;
        }
        return prev;
    }
}

时间复杂度:O(n),其中 n 是链表的长度,要遍历一次链表
空间复杂度:O(1)。

四、总结

  这道题就是将每个节点指向下一个节点指针指向前一个节点,写的时候有一点要注意,就是每次要先存储下一个节点再去做逻辑。

如果觉得文章还不错就点个赞+关注呗~

#java##面试题目#
全部评论
感谢参与【创作者计划3期·技术干货场】!欢迎更多牛油来写干货,瓜分总计20000元奖励!!技术干货场活动链接:https://www.nowcoder.com/link/czz3jsgh3(参与奖马克杯将于每周五结算,敬请期待~)
点赞 回复 分享
发布于 2021-05-26 15:55
头插法遍历一遍
点赞 回复 分享
发布于 2021-05-27 23:22

相关推荐

刚面了秋招体验最差的一场……周六,面试官感觉已经面麻了,迟到了几分钟。一上来首先把我自我介绍打断了,我都快讲完了,他打断说你先不用说了。然后全程很冷漠+生硬,看我有点卡壳就说跳过。最无语的是到最后他问了一个问题,我还在认真回答,没说完又打断了,说“今天面试就到这里了,时间差不多了”,我说好的,然后他说嗯就这样,再见,就挂了视频。结束了。面试官甚至懒得介绍他们业务是啥,也完全不问我有什么问题。理论上他这样做,没有任何问题,一看候选人能力不行,快速解决战斗不浪费时间,没必要和我多费口水。但说实话,这一场面试让我真实地感到大厂是真的把人当机器和牛马,面试官面到麻木,对面试者没有任何耐心,还在周末加班,只想快速完成任务,也挺可怜的。而面试者,就像菜场的一块猪肉,一旦被发现有问题就被直接丢到一旁。其实我也有答得更差的时候,但是没碰到过这种类型的面试官,哪怕想把你挂了,对方也不会反复打断以及毫无互动。然后面试完几分钟内就直接给我挂了。同级别的大厂,面试体验和此次几乎是断层。A大厂组里大老板看我写不出算法,一行行看我代码,引导我改正;B大厂面试小姐姐认真科普面试流程;C大厂两位面试官都给我很好的评价说很看好我;D独角兽公司面试官和我互称您,非常客气;暑期刚开始投简历遇到的E初创公司技术官狠狠安慰我让我好好准备基础,可以多多拿他们小公司练手……虽然我知道其实人家的做法无可厚非,同为打工人都有难处,态度好是情分不是本分,但是还是忍不住觉得不舒服。还好已经面了很多场,有了心理建设,这次只是吐槽发泄一下……真无语。我是找工作,不是找气受……#面试官态度##面试体验感最好的是哪家?#
点赞 评论 收藏
分享
图拉斯 运营管培 1w+绩效
点赞 评论 收藏
分享
2 2 评论
分享
牛客网
牛客企业服务