LeetCode刷题—链表—206反转链表easy(双指针与递归)

1、题目属于对基础的数据结构的操作,出现频次较高

2、解题思路如下:

双指针法:

解这道题,首先明白:
1、操作步骤  2、迭代
3、循环边界条件,确定初始值和循环终止条件
4、最后返回值方法是什么呢,举例子,
循环终止条件:cur走到末尾,等于null值了,我希望他不执行循环结构中的语句了,直接返回了
初始值:开始的时候,走一遍循环,cur从头结点开始,pre等于null才能满足条件
最终返回值:cur走到末尾,等于null才结束,最后一次循环pre最后一个节点,所以返回pre
public class Solution206 {public ListNode reverseList(ListNode head) {
//        解这道题,首先明白:
//        1、操作步骤  2、迭代
//        3、循环边界条件,确定初始值和循环终止条件
//        4、最后返回值//        方法是什么呢,举例子,
//        循环终止条件:cur走到末尾,等于null值了,我希望他不执行循环结构中的语句了,直接返回了
//        初始值:开始的时候,走一遍循环,cur从头结点开始,pre等于null才能满足条件
//        最终返回值:cur走到末尾,等于null才结束,最后一次循环pre最后一个节点,所以返回preListNode cur = head;ListNode pre = null;while(cur!=null){ListNode temp = cur.next;cur.next = pre;// 迭代pre = cur;cur = temp;}return pre;}public static class ListNode {int val;ListNode next;ListNode() {}ListNode(int val) { this.val = val; }ListNode(int val, ListNode next) { this.val = val; this.next = next; }}
}

递归法:

基本严格按照双指针法改编,一一对应

public class Solution206_2 {public ListNode reverseList(ListNode head){ListNode pre = null;ListNode cur = head;return reverse(pre,cur);}public ListNode reverse(ListNode pre, ListNode cur) {if(cur==null) return pre;ListNode temp = cur.next;cur.next = pre;return reverse(cur, temp);}public static class ListNode {int val;ListNode next;ListNode() {}ListNode(int val) { this.val = val; }ListNode(int val, ListNode next) { this.val = val; this.next = next; }}
}

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

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

相关文章

Ubuntu环境vscode配置Log4cplus库

1、下载源码 http://sourceforge.net/projects/log4cplus/ 2、安装 例如我下载的是2.0.8版本压缩包,需要解压缩 log4cplus-2.0.8.7z安装解压工具: apt install p7zip-full解压: 7z x log4cplus-2.0.8.7z -r -o/home/配置及编译安装&#x…

MySQL十部曲之四:MySQL中的数据类型

文章目录 前言概述数字类型数字类型语法数字类型字面量十六进制字面量位字面量布尔字面量 数字类型的属性超出范围和溢出处理 时间和日期类型时间和日期类型语法DATE、DATETIME和TIMESTAMP的异同TIMESTAMP和DATETIME的自动初始化和更新时间和日期字面量 字符串类型字符串类型语…

解读BEVFormer,新一代CV工作的基石

文章出处 BEVFormer这篇文章很有划时代的意义,改变了许多视觉领域工作的pipeline[2203.17270] BEVFormer: Learning Birds-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers (arxiv.org)https://arxiv.org/abs/2203.17270 BEV …

php mysql字段默认值使用问题

前提是使用了事务,在第一个阶段 是A表操作保存,第二阶段操作B表,操作B表的时候使用了A表的一个字段,这个字段在第一阶段没有设置值,保存的时候使用字段默认值。 【这种情况 最好是在第一阶段 把后面要使用的字段设置好…

深度学习-搭建Colab环境

Google Colab(Colaboratory) 是一个免费的云端环境,旨在帮助开发者和研究人员轻松进行机器学习和数据科学工作。它提供了许多优势,使得编写、执行和共享代码变得更加简单和高效。Colab 在云端提供了预配置的环境,可以直接开始编写代码&#x…

Python静态web服务器实战

准备html页面,包含两个页面(index.html, index2.html)和一个404(404html)页面,目录示意: 1.返回固定页面 with open("website/index.html","r") as file: import socket# # 返回固定的页面 website/index.html if __na…

arcgis 计算面积(计算经纬度、算数等同理)

arcgis 计算面积 先定义一个新的变量,例如:area 选中,右击,选择“打开属性表格”,在打开的属性表格中单击最左边的按钮,选择“添加字段” 定义新的字段为浮点型变量,定义变量名为area&#xff…

访问者模式-C#实现

该实例基于WPF实现,直接上代码,下面为三层架构的代码。 一 Model using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace 设计模式练习.Model.访问者模式 {public class Com…

OkHttp的理解和使用

OkHttp是一个流行的开源HTTP客户端库,用于在Android和Java应用程序中进行网络请求。它提供了简洁易用的API和丰富的功能,包括同步和异步请求、文件上传和下载、缓存管理等。 下面是一个详细的OkHttp教程,帮助你理解和使用OkHttp:…

网络安全全栈培训笔记(58-服务攻防-应用协议设备KibanaZabbix远控向日葵VNCTV)

第58天 服务攻防-应用协议&设备Kibana&Zabbix&远控向日葵&VNC&TV 知识点: 1、远程控制第三方应用安全 2、三方应用-向日葵&VNC&TV 3、设备平台-Zabbix&Kibanai漏洞 章节内容: 常见版务应用的安全测试: 1…

[蓝桥杯]真题讲解:冶炼金属(暴力+二分)

蓝桥杯真题视频讲解&#xff1a;冶炼金属&#xff08;暴力做法与二分做法&#xff09; 一、视频讲解二、暴力代码三、正解代码 一、视频讲解 视频讲解 二、暴力代码 //暴力代码 #include<bits/stdc.h> #define endl \n #define deb(x) cout << #x << &qu…

Flink面试题

0. 思维导图 1. 简单介绍一下Flink♥♥ Flink是一个分布式的计算框架&#xff0c;主要用于对有界和无界数据流进行有状态计算&#xff0c;其中有界数据流就是值离线数据&#xff0c;有明确的开始和结束时间&#xff0c;无界数据流就是指实时数据&#xff0c;源源不断没有界限&a…

【c语言】详解操作符(上)

1. 操作符的分类 2. 原码、反码、补码 整数的2进制表示方法有三种&#xff0c;即原码、反码、补码 有符号整数的三种表示方法均有符号位和数值位两部分&#xff0c;2进制序列中&#xff0c;最高位的1位是被当做符号位其余都是数值位。 符号位都是用0表示“正”&#xff0c;用…

JavaScript高级:闭包

1 概念 一个函数对周围状态的引用&#xff0c;捆绑在一起&#xff0c;内层函数中可以访问到外层函数的作用域。 简单理解&#xff1a;闭包 内层函数 外层函数的变量 先看个简单的代码&#xff1a; function outer() {let a 1function inner() {console.log(a)} } outer(…

Mysql-日志介绍 日志配置

环境部署 docker run -d -p 3306:3306 --privilegedtrue -v $(pwd)/logs:/var/lib/logs -v $(pwd)/conf:/etc/mysql/conf.d -v $(pwd)/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD654321 --name mysql mysql:5.7运行指令的目录下新建好这些文件&#xff1a; 日志类型 日…

顶顶通呼叫中心中间件机器人压力测试配置(mod_cti基于FreeSWITCH)

介绍 顶顶通呼叫中心中间件机器人压力测试(mod_cit基于FreeSWITCH) 一、配置acl.conf 打开ccadmin-》点击配置文件-》点击acl.conf-》我这里是已经配置好了的&#xff0c;这里的192.168.31.145是我自己的内网IP&#xff0c;你们还需要自行修改 二、配置线路 打开ccadmin-&g…

【代码---利用程序读取视频,每隔几帧保存为一张图片】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言代码详细解释导入OpenCV库&#xff1a;定义保存帧的函数 save_frames&#xff1a;打开视频文件并获取基本信息&#xff1a;输出视频信息&#xff1a;循环读取视…

在计算机系统中,can总线和sata总线的区别是什么

CAN&#xff08;Controller Area Network&#xff09;总线和SATA&#xff08;Serial ATA&#xff09;总线是两种不同的总线类型&#xff0c;它们在计算机系统中扮演不同的角色&#xff0c;有一些显著的区别&#xff1a; 应用领域&#xff1a; CAN总线&#xff1a; CAN总线通常用…

mac/macos上编译electron源码

官方教程&#xff1a;Build Instructions | Electron 准备工作这里不写了&#xff0c;参考官方文档&#xff0c;还有上一篇windows编译electron electron源码下载及编译-CSDN博客 差不多步骤&#xff0c;直接来 网络记得使用魔法 下载编译步骤 0. 选择目录很重要&#xff0…

Git常用命令(小白操作指引)

记录经常使用的Git命令。对于小白来说会以下命令&#xff0c;在工作中基本就可以使用Git了。 包括从克隆远程分支,到合并远程分支到本地&#xff0c;到最后的提交分支到远程。 克隆现有仓库 工作第一步&#xff0c;克隆远程分支到本地&#xff0c;使用以下命令克隆远程仓库到本…