大厂常见算法50题-反转链表

请添加图片描述

专栏持续更新50道算法题,都是大厂高频算法题,建议关注。

文章目录

  • 解法参考链接
  • 题目
  • 解法一 双指针
  • 解法二 递归
  • 解法三 妖魔化的双指针
  • 总结

解法参考链接

题目

image.png

解法一 双指针

  • 定义两个指针: pre 和 cur。pre 在前 cur 在后。
  • 每次让 pre的 next 指向 cur,实现一次局部反转
  • 局部反转完成之后, pre 和 cur 同时往前移动一个位置
  • 循环上述过程,直至 pre 到达链表尾部
class Solution {public ListNode reverseList(ListNode head) {// 如果初始化用这个,输出就是543210,多了一个0// ListNode pre = new ListNode();ListNode pre = null;ListNode cur = head;while (cur != null) {ListNode temp = cur.next;cur.next = pre;pre = cur;cur = temp;}return pre;}
}

解法二 递归

class Solution {public ListNode reverseList(ListNode head) {if (head == null || head.next == null) {return head;}ListNode ret = reverseList(head.next);// 两次next需要理解一下:head.next实际代表的就是最后一个节点,看方法的入参head.next.next = head;head.next = null;return ret;}
}

解法三 妖魔化的双指针

class Solution {public ListNode reverseList(ListNode head) {if (head == null) { return null; }ListNode cur = head;while (head.next != null) {ListNode temp = head.next.next;head.next.next = cur;cur = head.next;head.next = temp;}return cur;}
}

总结

反转链表在面试时非常高频,解法主要掌握解法一即可,要会写还要会说,面试官有时会问思路的。对于没刷过算法的建议看下文章开头的视频题解。作者K神,视频题解逐帧观看,看完自己一帧一帧画下来,可以不看视频自己画出来说明真正理解了。

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/641588.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言进阶课程学习记录-第48课 - 函数设计原则

C语言进阶课程学习记录 - 函数设计原则 本文学习自狄泰软件学院 唐佐林老师的 C语言进阶课程,图片全部来源于课程PPT,仅用于个人学习记录

JVM学习笔记(五)内存模型

目录 1、原子性 1.1 问题分析 1.2 解决方法 2、可见性 2.1 退不出的循环 2.2 解决办法 3、有序性 3.1 诡异的结果 3.2 解决办法 3.3 有序性理解 3.4 happens-before 4、CAS与原子类 4.1 CAS 4.2 乐观锁与悲观锁 4.3 原子操作类 5、synchronized 优化 5.1 轻量…

【力扣 Hot100 | 第五天】4.20(回文链表)

1.回文链表 1.1题目 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例一: 输入:head [1,2,2,1] 输出:true示例二: 输入…

深度学习入门(4)

神经网络的构建 import numpy as np import matplotlib.pyplot as plt def sigmoid(x):return 1/(1np.exp(-x)) def identity_function(x):#恒等函数return x def init_network():#进行权重和偏置的初始化,并保存到字典中network{}network[W1]np.array([[0.1,0.3,0…

Pytorch 学习路程 - 1:入门

目录 下载Pytorch 入门尝试 几种常见的Tensor Scalar Vector Matrix AutoGrad机制 线性回归尝试 使用hub模块 Pytorch是重要的人工智能深度学习框架。既然已经点进来,我们就详细的介绍一下啥是Pytorch PyTorch 希望将其代替 Numpy 来利用 GPUs 的威力&…

HCIP-Datacom-ARST必选题库_01_ACL【7道题】

一、单选 1.下面是一台路由器的部分配置,关于该配置描述正确的是: 源地址为1.1.1.1的数据包匹配第一条ACL语句rule 0,匹配规则为允许 源地址为1.1.1.3的数据包匹配第三条ACL语句rule 2,匹配规则为拒绝 源地址为1.1.1.4的数据包匹配第四条ACL语句rule 3,匹配规则为允…

轻松学会微信小程序开发(一)

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

什么是SSRF攻击?该如何防御SSRF攻击?

随着网络安全形式日益严峻,各式各样的攻击频繁发生。当前,应用程序为了给用户提供更多更方便的功能,从另一个URL获取数据的场景越来越多,因此出现了一种安全漏洞攻击-SSRF。并且,由于云服务和体系结构的复杂性&#xf…

@Value注解使用详解

目录 介绍 基于配置文件注入: 介绍 Value 注解可以用来将外部的值动态注入到 Bean 中,在 Value 注解中,可以使${} 与 #{} Value("${}"):可以获取对应属性文件中定义的属性值。 Value("#{}"):表示…

办公设备租赁行业内卷瞎扯

办公设备租赁行业内卷瞎扯 最近听到很多同行抱怨,现在市场太卷了,真的有点到了卷不死就往死里卷的节奏,让大家都开始想换地方,或者转行。但是今天,我想从另外一个角度聊一下这个问题,分析一下,…

windows安装nc命令的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

记录如何用php做一个网站访问计数器的方法

简介 创建一个简单的网站访问计数器涉及到几个步骤,包括创建一个用于存储访问次数的文件或数据库表,以及编写PHP脚本来增加计数和显示当前的访问次数。 方法 以下是使用文件存储访问次数的基本步骤: 创建一个文本文件来存储计数&#xff1a…