面试高频题-反转链表

简介: 面试高频题-反转链表

最近开始分享一些面试的高频题,方向有算法,数据结构,unity,c#,c++,渲染图形学等

我准备做成一个合集,内容适合小白,讲解详细生动,真正让大家搞懂一些问题

好了,闲话少说,我们开始第一篇算法

为什么是算法呢,很多老鸟可能嗤之以鼻,其实高端面试首面必是算法和数据结构,如果你答得不好,那基本不会有第二面

为什么如此简单粗暴的残酷?

  1. 1.因为在所有的面试中,只有算法和数据结构是没法背的,是没法伪装的,你会就是会,不会就是不会,项目经历和八股文都是可以伪装的

  2. 2.你代码写的怎么样,时间复杂度,空间复杂度等,看你是不是聪不聪明,靠算法是最容易看出来的

  3. 3.你的思维的严谨性,对于边界,极值是否有考虑,你的程序是否健壮

如果你还想进一线大厂,或者国际大厂,请重视算法,你如果就这么混混请忽略下面的内容

下面我们开始今天的面试题吧

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

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

输出:[5,4,3,2,1]






输入:head = [1,2]

输出[2,1]


好了,现在开始你不要百度,不要google,不要chatgpt

尽量自己独立思考去解决这道题,而不是看答案

哪怕你想出来最差的解法,

那也是你自己的如果你看了答案,

对不起,你下次做次做,我保证你还是不会这样你第一次做完全是浪费时间





---独立思考分割线-----------------------------------------------


这道题,你如果用栈什么的,时间复杂度会O(n)


其实你要答到双指针迭代法,具体为啥可以看下面的视频

image.png

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     public int val;
 *     public ListNode next;
 *     public ListNode(int val=0, ListNode next=null) {
 *         this.val = val;
 *         this.next = next;
 *     }
 * }
 */
public class Solution {
    public ListNode ReverseList(ListNode head) {
           ListNode pre = null;
           ListNode cur = head;
           while(cur != null){
               ListNode tmp = cur.next; //为防止指针断开,先拿一个临时变量先存储cur的next节点
               cur.next = pre;   //反转链表
               pre= cur;  //pre移动到cur
               cur = tmp; //cur移动到next
           }
           return pre;
    }
}
相关文章
|
2月前
面试题 02.04:分割链表
面试题 02.04:分割链表
40 0
|
2月前
【一刷《剑指Offer》】面试题 17:合并两个排序的链表
【一刷《剑指Offer》】面试题 17:合并两个排序的链表
|
2月前
【一刷《剑指Offer》】面试题 16:反转链表
【一刷《剑指Offer》】面试题 16:反转链表
|
2月前
【一刷《剑指Offer》】面试题 15:链表中倒数第 k 个结点
【一刷《剑指Offer》】面试题 15:链表中倒数第 k 个结点
|
2月前
|
机器学习/深度学习
【一刷《剑指Offer》】面试题 13:在 O(1) 时间删除链表结点
【一刷《剑指Offer》】面试题 13:在 O(1) 时间删除链表结点
|
2月前
【一刷《剑指Offer》】面试题 5:从尾到头打印链表
【一刷《剑指Offer》】面试题 5:从尾到头打印链表
|
2月前
|
算法 索引
【数据结构】10道经典面试题目带你玩转链表
【数据结构】10道经典面试题目带你玩转链表
102 0
LeetCode | 面试题 02.04. 分割链表
LeetCode | 面试题 02.04. 分割链表
|
2月前
|
算法 Java C++
数据结构与算法面试题:实现一个函数,判断一个链表是否为回文链表。(提示:反转后半部分链表比对前半部分)
数据结构与算法面试题:实现一个函数,判断一个链表是否为回文链表。(提示:反转后半部分链表比对前半部分)
25 0
|
2月前
|
Java
面试题 02.07:链表相交
面试题 02.07:链表相交
20 0