链表热门面试题(二)

news2024/11/27 21:55:58

目录

    • 前言
    • 一、删除链表的倒数第 N 个结点
    • 二、两两交换链表中的节点
    • 三、旋转链表
    • 四、删除排序链表中的重复元素
    • 五、删除排序链表中的重复元素 II
    • 六、反转链表II
    • 七、删除链表中的节点
    • 八、奇偶链表

前言

在这里插入图片描述

一、删除链表的倒数第 N 个结点

题目:
在这里插入图片描述
方法1:找到删除的结点(双指针法)+尾插
提交代码:
在这里插入图片描述

提交结果:
在这里插入图片描述

思路分析:
本题的基本思路就是先找到倒数第n个结点,然后再遍历原来链表,将不是该节点的其他结点依次尾插进新链表,然后返回新链表的头指针即可。上面这个代码我们将空表和链表中只有一个结点的情况单独进行分析,其实当链表中只有一个结点的时候,上面代码中的常规情况也是可以符合的。上面在遍历比较原来链表中的结点和删除结点的时候需要注意比较的一定只能是结点的指针,而不能是结点中存在的值,因为不同的结点可能存放的值是一样的。

方法2:找到删除的结点(双指针法)+双指针(前后指针)
提交代码:
在这里插入图片描述

提交结果:
在这里插入图片描述

思路分析:
这个方法是再找到要删除的结点之后,再找到删除结点的前一个结点,然后让前一个结点的next指向删除结点的下一个即可。注意找前一个的时候,prev刚开始是从NULL开始的,因为头结点没有所谓的前一个结点。

二、两两交换链表中的节点

题目:
在这里插入图片描述

提交代码:
在这里插入图片描述

提交结果:
在这里插入图片描述

思路分析:

三、旋转链表

题目:
在这里插入图片描述

提交代码:
在这里插入图片描述

提交结果:
在这里插入图片描述

思路分析:

四、删除排序链表中的重复元素

题目:
在这里插入图片描述

提交代码:
在这里插入图片描述

提交结果:
在这里插入图片描述

思路分析:

五、删除排序链表中的重复元素 II

题目:
在这里插入图片描述

提交代码:
在这里插入图片描述

提交结果:
在这里插入图片描述

思路分析:

六、反转链表II

题目:
在这里插入图片描述

提交代码:
在这里插入图片描述

提交结果:
在这里插入图片描述

思路分析:

七、删除链表中的节点

题目:
在这里插入图片描述

提交代码:
在这里插入图片描述

提交结果:
在这里插入图片描述

思路分析:
这个题没有给我们链表,只是给了我们要删除的结点的指针(地址),那么我们就需要自己假设这个结点是某一个链表在中的结点,那么一般情况下,删除单链表中的结点采取的方法是找到这个删除结点的上一个结点和下一个结点,那么在这个题中,没有给我们链表你,所以这种方法显然是不合适的,那么删除链表中结点的另一个思路是可以转换成删除这个链表的下一个结点,因为题目已经提示,删除的结点不是链表中的最后一个结点,说明删除的结点的下一个还是有结点的,所以我们可以转换成删除这个结点的下一个结点,步骤是先将下一个结点的数据复制到该结点,然后让当前结点的next指针指向下一个结点的下一个结点,从而下一个结点就从原来链表解除了。

八、奇偶链表

题目:
在这里插入图片描述

方法1:多指针法+链表分割+链表连接
提交代码:
在这里插入图片描述

提交结果:
在这里插入图片描述

思路分析:

方法2:标志位法+链表分割+链表连接
提交代码:
在这里插入图片描述

提交结果:
在这里插入图片描述

思路分析:

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

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

相关文章

【Java多线程】创建多线程方式一

线程的创建和启动 *Java语言的JVM允许程序运行多个线程,它通过java.lang.Thread类来体现。 *Thread类的特性 每个线程都是通过某个特定Thread对象的run()方法来完成操作的,经常 把run()方法的主体称为线程体 通过该Thread对象的start()方法来启动这个…

判断两条线段是否相交

参考链接: 1 2 一、判断线段是否相交需要下面两步: (1)快速排斥实验 (2)跨立实验 二、第一步快速排斥实验 对上图两条L1,L2线段来说,L1 x的最大值为d端点x5,L2 x的最小值为a端点x…

RobotFramework环境安装和入门

环境安装1、安装python建议版本3.7,Robot Framework不支持python最新版。 可以通过以下地址下载https://www.python.org/ftp/python/3.7.3/python-3.7.3-amd64.exe安装过程中选择添加到环境变量。2、安装Robot Framework以及所需组件注意各个组件的版本号&#xff0…

LVGL学习笔记15 - 文本框TextArea

目录 1. Parts 2. 样式 2.1 修改背景bg 2.2 修改边界border 2.3 修改文本 2.3.1 lv_textarea_add_char 2.3.2 lv_textarea_add_text 2.3.3 lv_textarea_set_text 2.3.4 设定可输入的字符 2.3.5 删除字符 2.3.6 设定字符串最大长度 2.4 滚动条 2.4.1 滚动方向 2.4.2 …

RHCE学习笔记-133-1

RH133-01 installation 光盘引导后,在提示符下输入:linux askmethod 可以支持:local cdrom,hard drive,nfs image,ftp,http方式 cpu on x86 2个物理超线程CPU 使用smp or hugemem kernel可以支持 32个物理cpus 内存 标准x86 kernel 4G smp i686/athlon kernel 16G hugemem SMP …

创建新分支,基于某一分支创建新分支,git push --set-upstream origin

背景: 基于hcc1.2的开发分支拉去hcc_hotfix_1.2.0分支,解读:在仓库中基于某个分支,创建一个新的分支 做法(解决): 1、第一步:git branch hcc_hotfix_1.2.0 2、第二步:g…

葡萄城邀您参与「表格技术开发者新年分享会」,共话表格技术新未来!

数据资产是企业最重要的资产之一,表格也是企业最普遍的数据整理手段。在数字经济时代,各行业飞速发展,拥抱数字化、进行数字化升级已成为大势所趋,企业对协同办公、大数据分析、表格智能化应用等领域的需求也呈爆发式增长&#xf…

GrapeCity Documents Image Viewer JavaScript Crack

GrapeCity Documents Image Viewer 是跨平台 JavaScript 图像查看器 允许用户使用我们的 JavaScript 图像查看器在您的 Web 应用程序中查看和编辑图像。采集 by Ω578867473 支持多种图像格式 适用于所有现代浏览器和框架,包括 Edge、Chrome、Firefox、Opera、Saf…

【UE4 第一人称射击游戏】33-创建一个小地图

上一篇:【UE4 第一人称射击游戏】32-添加击杀AI的提示功能(使用到控件蓝图的动画功能)本篇效果:可以看到左上角完成了小地图的制作步骤:打开名为“FPSHUD”的控件蓝图,拖入一个图像控件,表示迷你…

Diffusion 和Stable Diffusion的数学和工作原理详细解释

扩散模型的兴起可以被视为人工智能生成艺术领域最近取得突破的主要因素。而稳定扩散模型的发展使得我们可以通过一个文本提示轻松地创建美妙的艺术插图。所以在本文中,我将解释它们是如何工作的。 扩散模型 Diffusion 扩散模型的训练可以分为两部分: 正向扩散→在图…

输出全排列(C++版)

目录 输出全排列 一、问题描述 二、运行环境说明 ​三、代码段 四、效果展示 输出全排列 备注:大二(上)数据结构课程设计A题 一、问题描述 请编…

我是如何利用cps平台赚钱的?

你好,我是你们熟悉而又陌生的好朋友梦龙,一个创业期的年轻人 今天跟你做个分享,众所周知互联网是一块非常大的蛋糕,几位互联网巨头也做不到完全吃透,这次梦龙给你分享的是实际的经验,实际的案例分享。 最开…

Spring存储和读取对象 -- 2

Spring存储和读取对象 -- 2前言一、存储 Bean 对象1.1 前置工作:配置扫描路径 (重要)1.2 添加注解存储 Bean 对象1.2.1 五大类注解Bean 命名规则1.2.2 方法注解 BeanBean 命名规则与重命名二、获取 Bean 对象 (对象注入)2.1 属性注入优点分析缺点分析2.2 Setter 注入…

如何在Jetbrain Rider中使用EntityFrameWork (Core) 命令行,如添加迁移和更新数据库

在Visual Studio中,EntityFrameWork命令如Add-Migration和Update-Database通常在包管理器控制台中运行。这在Visual Studio中工作得很好,但不幸的是,它不是可移植的。这些命令是基于powershell的,并且包管理器控制台绑定了Visual …

开源的文档型数据库--MongoDB(安装)

1、简介 MongoDB 是一个开源的、文档数据库管理系统。它提供了高性能、高可扩展性和高可用性。 MongoDB 使用了一种称为 BSON 的二进制形式的 JSON 来存储数据。这使得 MongoDB 可以轻松地存储各种数据类型,包括大型对象和二进制文件。 MongoDB 的一个重要特性是它的…

多线程1.

多线程1 1.如果想对地址空间的堆区做更细腻化的空间管理,怎么办? 搞一个vim_area_struct,他是一个双向链表。每一个节点是一块堆区空间,用链表串起来。 2.如何管理物理内存? 设定一个数据结构,如&#x…

电子会议桌牌

产品特色: 低功耗,常规使用3-5年电池寿命支持空中唤醒,刷新快速,几秒钟内看到结果点阵电子纸屏幕,视角接近180基于Web的应用界面,支持跨平台操作安装简单,快速布置电池供电不需要布线双面显示&…

神经网络模型的参数量和FlOPS

一、FLOPS、FLOPs和GFLOPs的概念 FLOPS:注意S是大写,是 “每秒所执行的浮点运算次数”(floating-point operations per second)的缩写。它常被用来估算电脑的执行效能,尤其是在使用到大量浮点运算的科学计算领域中。正…

重装系统把所有盘格式化教程

在使用电脑的过程中,可能会遇到系统重装的问题,但是有些朋友就觉得之前的分区不太合理,就打算全盘格式化重装系统,那小白一键重装系统怎么把所有盘格式化呢?这需要借助U盘或光盘来引导了。下面就来看看操作教程吧。 工具/原料&a…

2.17 STM32 SysTick—系统定时器

文章目录1、简介2、寄存器2.1 SysTick控制和状态寄存器(STK_CTRL)2.2 重载值寄存器(STK_LOAD)2.3 SysTick当前值寄存器 (STK_VAL)2.4 校准寄存器(STK_CALIB)3、SysTick 定时实验3.1 在标准库中3.2 在HAL库中的初始化4、SysTick 定…