算法day08 链表

4.链表_哔哩哔哩_bilibili

一、判断链表为回文

       暴力方式:

                从链表头开始将链表每一个元素值依次放入数组中,按下标比较值。

                从链表尾开始将链表一半元素值放入stack栈中;每次弹栈比较 弹出的值和 链表值。

        快慢指针:

                 假设有这样一个链表【 1 -> 2 ->  3 ->  2->  1  】 已知条件只有链表head

                开始时快指针,慢指针都指向链表头,循环让快指针走两步,慢指针走一步。

                跳出循环:当快指针即将越界时,慢指针指向中点;

                跳出循环时为标志拿到链表尾节点tail和慢指针指向的中间节点

                实现单向链表反转  【1 -> 2 ->  3 <-  2 <- 1   】

                看作两个单向链表是否一致的比较。

                

二、链表的排序:将链表按左中右的顺序  排序为小中大

         暴力方式:

                 链表转换为数组,使用排序算法。

          根据链表结构解决:

                 创建六个额外链表 节点对象  初始值都为null:

                                        头节点        尾节点

                        小部份 : sh                st

                      中间部份:   eh                et

                        大部分:   bh                bt

                 假设有这样一个单链表【4 -> 6 -> 3 -> 5 -> 8 -> 5 ->2  -> 5 -> 6】:

                        遍历链表 ,指针指向第一个元素4时:

                                sh =4        st =4

                        指针指向第二个元素6时: st 4 < 6

                                 bh = 6    bt =6

                        指针指向第三个元素3时:3 < st 4

                                st = 3;      

                                sh指向st此时地址 :也就是  sh - >  第三个3的地址

                        指针指向第四个元素5时:st 3 < 5  <  6  bh     et = null

                                eh = 5   et= 5

                        指针指向第五个元素8时:bt 6 < 8   

                                bt =8;      

                                bh指向bt 此时地址 :也就是  bh- >  第五个元素8的地址

                       指针指向第六个元素5时: et  5  =  5   

                                et  = 5   //et地址改变为第六个元素5的地址

                                eh指向et  此时地址 :也就是  et  - >  第六个元素5的地址

                       指针指向第七个元素2时: eh  5  >  2    

                                st = 2  

                                sh - >  第三个3的地址  ->   st  

                       ......

                       将小部分  中间部份  大于部份  链接成一个链表

                               sh  ->  st  ->  eh  ->  et  ->  bh  ->  et

                        但是这还是理想化的状态,还要考虑某个额外节点对象为null的情况,这个时候需要剔除掉这个节点对象。

                

                

三、复制整个链表  单链表的随机指针

                链表结构:

public  class Node{private Node  node;private Node random;private int  value;public Node( int value){this.value  = value}
}

                

        暴力方式

                使用HashMap<Node,Node>  :

                譬如键为链表头节点 ①  ,   值就  新创建一个node对象 ①﹡

                每一个节点都对应了一个新的节点对象。

                可以遍历整个链表,通过查询map的key,完成对map值 的设置,也就完成了整个链表的设置。

        根据链表结构解决:     

                 将【1  -> 2->3 -> null 】变为【1 ->1* -> 2-> 2* ->3 -> 3* -> null  】

                每两个节点间新插入一个新节点对象

                再去考虑创建的新节点对象的属性设置

                最后再抽出新创建的节点对象

                

 四、两个单向链表相交

                

        

        

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

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

相关文章

【Threejs进阶教程-着色器篇】6. 2D SDF(三) 移动图形,限制图形,绘制多个图形

2D SDF 移动与合并图形 前五篇地址&#xff0c;建议按顺序学习本篇使用到的初始代码减小扩散范围clamp函数修改maxDistance来修改扩散范围 移动扩散中心添加第二个扩散点降低点的同步率调整参数来优化效果添加更多扩散点 完整源码如有不明白的&#xff0c;可以在下方留言或者加…

【GIT】Idea中的git命令使用-全网最新详细(包括现象含义)

原文网址&#xff1a;【GIT】Idea中的git命令使用-全网最新详细&#xff08;包括现象含义&#xff09; 文章目录 **命令1&#xff1a;查看当前所处分支&#xff1a;****命令2&#xff1a;拉取最新代码&#xff1a;****命令3&#xff1a;切换分支&#xff1a;****命令4&#xff…

MAC 、 IP ARP

MAC地址 基本概念 MAC地址是以太网的MAC子层所使用的地址——数据链路层 使用点对点信道的数据链路层不需要使用地址 使用广播信道的数据链路层必须使用地址来区分各主机 实现同一个广播信道上的不同主机之间的通信 每个主机都必须要有一个唯一的表示——一个数据链路层地址…

7.Redis 的设计和实现详解

1. 数据结构和内部编码 Redis 支持多种数据结构&#xff0c;包括字符串&#xff08;string&#xff09;、哈希&#xff08;hash&#xff09;、列表&#xff08;list&#xff09;、集合&#xff08;set&#xff09;和有序集合&#xff08;zset&#xff09;。每种数据结构都有其…

基于Java+SpringBoot+Vue的学生评奖评优管理系统的设计与实现

基于JavaSpringBootVue的学生评奖评优管理系统的设计与实现 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345; 某信 gzh 搜索【智…

2024 年的 Web3 游戏:演变、趋势和市场动态

Web3 游戏行业在经历了多年的快速发展和变革之后&#xff0c;正在2024年迎来全新的阶段。这个行业从最初的边玩边赚&#xff08;Play-to-Earn, P2E&#xff09;模式出发&#xff0c;如今正在向更为平衡的“边玩边赚”模式转型。这种转型不仅解决了早期 P2E 模式下存在的可持续性…

EmguCV学习笔记 VB.Net 9.1 VideoCapture类

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访问…

编译LineageOS模拟器镜像,导出到AndroidStudio

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ 源码下载 LineageOS官网&#xff1a;https://lineageos.org/ LineageOS源码 github 地址&#xff1a;https://github.com/LineageOS/android LineageOS源码国…

编写一个每次随机生成 10个 0(包括) 到 100 之间的随机正整数。

编写一个每次随机生成 10个 0&#xff08;包括&#xff09; 到 100 之间的随机正整数。 package cn.itcast.example;import java.util.Iterator; import java.util.Random; public class example {public static void main (String[] arge) {System.out.println("Math.ra…

QNN:基于QNN+example重构之后的yolov8det部署

QNN是高通发布的神经网络推理引擎&#xff0c;是SNPE的升级版&#xff0c;其主要功能是&#xff1a; 完成从Pytorch/TensorFlow/Keras/Onnx等神经网络框架到高通计算平台的模型转换&#xff1b; 完成模型的低比特量化&#xff08;int8&#xff09;&#xff0c;使其能够运行在高…

超长二进制利用Integer转换

1.Integer缺点 目前测试Integer只能一次性转4*7位二进制数&#xff0c;也就是7位16进制&#xff0c;故进行改进 2.改进 操作&#xff1a;每四位二进制一转换&#xff0c;以免到上限报错 注解格式&#xff1a;序号&#xff08;代码顺序&#xff09;解释 public class Main {…

《PCI Express体系结构导读》随记 —— 第II篇 第7章 PCIe总线的数据链路层与物理层(2)

接前一篇文章&#xff1a;《PCI Express体系结构导读》随记 —— 第II篇 第7章 PCIe总线的数据链路层与物理层&#xff08;1&#xff09; 7.1 数据链路层的组成结构 数据链路层使用ACK/NAK协议发送和接收TLP&#xff0c;由发送部件和接收部件组成。其中&#xff0c;发送部件由…

Java算法之堆排序(Heap Sort)

堆排序简介 堆排序是一种基于比较的排序算法&#xff0c;它使用二叉堆数据结构来实现。二叉堆是一种特殊的完全二叉树&#xff0c;其中每个父节点的键值都大于&#xff08;或等于&#xff09;其子节点的键值&#xff08;大顶堆&#xff09;&#xff0c;或者小于&#xff08;或…

docker在宿主机上最多可以创建多少个容器?

docker在宿主机上最多可以创建多少个容器&#xff1f; A. 1000 B. 和宿主机的cpu/memory 资源有关系 C. 不一定 选择C Docker 容器的数量受到宿主机的资源限制&#xff0c;包括CPU、内存和存储空间等。具体的容器数量取决于宿主机的硬件配置和资源使用情况。没有固定的数量限…

Springboot里集成Mybatis-plus、ClickHouse

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; Springboot里集成Mybati…

基于Java+SpringBoot+Vue的汽车销售网站

基于JavaSpringBootVue的汽车销售网站 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345; 某信 gzh 搜索【智能编程小助手】获取项…

【大模型】llama系列模型基础

前言&#xff1a;llama基于transformer架构&#xff0c;与GPT相似&#xff0c;只用了transformer的解码器部分。本文主要是关于llama&#xff0c;llama2和llama3的结构解读。 目录 1. llama1.1 整体结构1.2 RoPE1.3 SwiGLU 激活函数 2. llama22.2 GQA架构2.3 RLHF 3. llama3参考…

javascript用while语句计算1-100的和

while语句计算1-100的和的思路是 定义一个变量a1,变量b0 while(a<100) { bba或者ba a } 最后是输出b <html><head><meta charset"UTF-8"><title></title></head><body><script>let i1let a0while(i<1…

Springboot中使用Elasticsearch(部署+使用+讲解 最完整)

目录 引言 一、docker中安装Elasticsearch 1、创建es专有的网络 2、开放端口 3、在es-net网络上安装es和kibana 4、可能出现的问题 5、测试 6、安装IK分词器 7、测试IK分词器 二、结合业务实战 1、准备依赖 2、配置yml 3、读取yml配置 4、准备es配置类 5、编写测…

Leetcode面试经典150题-136.只出现一次的数字

解法都在代码里&#xff0c;不懂就留言或者私信 这个题不知道为啥会考&#xff0c;过于简单了&#xff0c;我解题写注释用了两分钟不到&#xff0c;5行代码。。。 class Solution {public int singleNumber(int[] nums) {/**这个题目确实时间的题&#xff0c;根据位运算法则我…