【数据结构篇】~链表算法题2

news2024/11/15 19:46:41

链表算法题2

  • 1.返回倒数第k个节点
    • 思路
    • 解析
  • 2.链表的回文结构​
    • 思路
    • 解析1(空间复杂度不符合)
    • 解析2
  • 3.相交链表​
    • 思路
    • 解析

1.返回倒数第k个节点

OJ链接
在这里插入图片描述

思路

有点像高中学的相对位移
利用快慢指针,开始时都指向头节点,然后让快指针先走k步,再让两个指针同时走,直到快指针走到 NULL ,返回慢指针的数据就行

解析

在这里插入图片描述

typedef struct ListNode lsnode;
int kthToLast(struct ListNode* head, int k){
    lsnode* slow=head,*fast=head;
    while(k--)
    {
        fast=fast->next;
    }
    while(fast)
    {
        fast=fast->next;
        slow=slow->next;
    }
    return slow->val;
}

2.链表的回文结构​

OJ链接
在这里插入图片描述

思路

回文的意思就是轴对称,也就是里面的数据呈轴对称就是会文结构

解析1(空间复杂度不符合)

可以把链表里的数据全放到数组中,然后判断数组是否是回文就行
在这里插入图片描述

 bool chkPalindrome(ListNode* A) {
        // write code here
        //if(A==NULL)
        //return NULL;
        int arr[900];int i=0;
        ListNode*purc=A;
        while(purc)
        {
            arr[i++]=purc->val;           
            purc=purc->next;
        }      
        int left=0;
        int right=i-1;
        while(left<right)
        {
            if(arr[left++]!=arr[right--])
            {return false;}
        }
        return true;
    }

解析2

按部就班的判断链表是否是回文结构
那么就要先找链表的中间节点,然后从中间节点把链表分为两部分,把后部分逆置和前部分进行比较就行

在这里插入图片描述

 ListNode* midnode(ListNode*head)
    {
      
        ListNode* slow=head;
        ListNode* fast=head;
        while(fast && fast->next)
        {
            slow=slow->next;
            fast=fast->next->next;
        }
        return slow;
    }
    ListNode*nizhi(ListNode*head)
    {
    
        ListNode*l1=nullptr,*l2=head,*l3=head->next;
        while(l2)
        {
            l2->next=l1;     
            l1=l2;         
            l2=l3;
            if(l3)
            l3=l3->next;
        }
        return l1;
    }

    bool chkPalindrome(ListNode* A) 
    {
        // write code here     
        //先找中间节点
        ListNode*phead=A;
        ListNode* mid = midnode (phead);
        //然后逆置第二部分
        ListNode* newhead=nizhi(mid);
        //然后比较,直到两个有一个为空
        while(A && newhead)
        {
            if(A->val != newhead->val)
            return false;
            else
           { A=A->next;
            newhead = newhead->next;
           }
        }
        return true;
    }

3.相交链表​

OJ链接
在这里插入图片描述

思路

先把两个链表长度对齐,然后同步遍历

解析

typedef struct ListNode lsnode;
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB)
{
    lsnode*l1=headA,*l2=headB;
    int sizea=0;int sizeb=0;
    while(l1)
    {
        sizea++;
        l1=l1->next;      
    }
    while(l2)
    {
        sizeb++;
        l2=l2->next;     
    }
    //计算a和b的长度,让长的先走差值步,到同一起点上
    int gap=abs(sizea-sizeb);
   
    if(sizea < sizeb)
    {
        lsnode*plong= headB;
        lsnode*pshort=headA;
    }
     lsnode* plong = headA;
    lsnode* pshort = headB;
    while(gap--)
    {
        plong=plong->next;
    }
    //开始比较
    while(plong && pshort)
    {
        //这里比较地址,如果比较值得话有问题
        if(plong == pshort)
       { return pshort;}

        plong=plong->next;
        pshort=pshort->next;    
    }
    return NULL;   
}

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

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

相关文章

redis之地理空间geo实战以及选项详解

redis之地理空间geo实战以及选项详解 Redis GEO Redis GEO 主要用于存储地理位置信息&#xff0c;并对存储的信息进行操作&#xff0c;该功能在 Redis 3.2 版本新增。 Redis GEO 操作方法有&#xff1a; geoadd&#xff1a;添加地理位置的坐标。 geopos&#xff1a;获取地理…

【时时三省】(C语言基础)指针进阶6

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 例题1&#xff1a; sizeof(数组名)&#xff0d;数组名表示整个数组的&#xff0d;计算的是整个数组的大小 &数组名&#xff0d;数组名表示整个数组&#xff0c;取出的是整个数组的地址 …

SprinBoot+Vue宠物领养救助微信小程序的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue3.6 uniapp代码 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平…

Windows如何恢复已删除文件?电脑数据恢复完整指南!

无论你是要释放磁盘空间还是因为其他原因删除或误删重要文件或文件夹后&#xff0c;现在一定想知道怎么还原。其实不用担心&#xff0c;在你删除文件时&#xff0c;你的电脑并没有完全删除它们&#xff0c;只是将它们标记为已删除&#xff0c;等待新数据覆盖。所以你还有很多方…

论文速读|BiGym:一款基于演示的移动双手操作机器人基准

项目地址&#xff1a;BiGym: A Demo-Driven Mobile Bi-Manual Manipulation Benchmark BiGym 是一个针对移动双手操作的机器人学习基准&#xff0c;包含 40 个在家庭环境中进行的任务&#xff0c;如简单的目标接近到复杂的厨房清洁。这些任务涵盖了从固定的目标接近到需要与各种…

监控平台之rollup打包

设计思路 1.根据模块&#xff0c;通过index.js去调用执行调用 2.WebEyeSDK.js暴露方法&#xff0c;同时定义init方法&#xff0c;去初始化config里的上报参数 3.rollup/build里入口文件为WebEyeSDK.js进行打包 4.打包编译用babel&#xff0c;同时安装babel/preset-env智能预…

SQL 编程基础

SQL&#xff08;结构化查询语言&#xff09;广泛应用于数据库操作&#xff0c;是每个程序员都需要掌握的技能之一。这篇文章将带你从基础入门&#xff0c;了解SQL编程中的常量、变量及流程控制语句。我们将采用简单易懂的语言&#xff0c;结合实际示例&#xff0c;帮助你轻松理…

(纯JS)图片裁剪

前言 不同的展示平台或印刷尺寸对图片的比例和尺寸有特定要求。通过裁剪,可以将照片调整为适合社交媒体、网站、相框或画册等不同输出渠道的尺寸和比例。工作上,有些人可能不方便上网,需要离线完成图片的裁剪.无意中发现,纯JS也可以制作出这样一个工具. 目录 功能 优点 主页…

亚信安全荣获“2024年网络安全优秀创新成果大赛”优胜奖

近日&#xff0c;由中央网信办网络安全协调局指导、中国网络安全产业联盟&#xff08;CCIA&#xff09;主办的“2024年网络安全优秀创新成果大赛”评选结果公布。亚信安全信舱ForCloud荣获“创新产品”优胜奖&#xff0c;亚信安全“宁波市政务信息化网络数据安全一体化指挥系统…

记:子线程实现QTcpSocket读写的问题

最近在改进考勤系统客户端多线程实现时遇到了线程异步和野指针问题 client&#xff1a;多线程实现ui界面显示&#xff08;主线程&#xff09;、人脸检测&#xff08;检测线程&#xff09;、socket网络通信&#xff08;通信线程)三个任务。 主线程&#xff1a; TimerEvent实时…

Windows安装docker,启动ollama运行open-webui使用AIGC大模型写周杰伦歌词

Windows安装docker&#xff0c;启动ollama运行open-webui使用AIGC大模型写周杰伦歌词 1、下载docker的Windows版本。 docker下载地址&#xff1a; https://docs.docker.com/desktop/install/windows-install/https://docs.docker.com/desktop/install/windows-install/ 2、设…

知识点复习3

Linux文件 索引节点inode 存放的是数据在磁盘中的位置 以及文件的一些基本信息比如说文件大小还有权限&#xff0c;目录项纪录的是文件的名字&#xff0c;索引节点指针&#xff0c;目录项是由内核维护的一个数据结构&#xff0c;存在内存中。 Linux命令 (1) Linux Top命令参数详…

东北买房除了房子便宜外,还可能省下数十万,给孩子美好未来

由于鹤岗的影响&#xff0c;如今人们纷纷在全国寻找实惠房子&#xff0c;不过对于购房者来说&#xff0c;其实在东北买房除了房子便宜之外&#xff0c;还有额外的好处&#xff0c;这是其他省份仅有便宜房子一个条件比不上的。 对于如今的大众来说&#xff0c;除了买房实现人生的…

【Python】按格式输出指定内容至新的Excel表中

优化之前写的文档更新工具&#xff0c;输出指定列的数据到公式表中&#xff0c;且确保数值单元格不会被识别为文本&#xff0c;导致Excel文档数值计算公式失效 ExcelTool.py import os import pandas as pd from openpyxl import load_workbook import json### Excel表指定shee…

论文《Improving your graph neural networks:A High-Frequency Booster》笔记

【CLAR 2022 ICDMW】作者指出&#xff0c;现有的GNN模型主要关注于消息传递机制&#xff0c;但这些模型往往受限于低通滤波器的局限&#xff0c;导致在多层堆叠时性能下降。为了解决这个问题&#xff0c;论文提出了一种新的正则化方法&#xff0c;称为补全拉普拉斯正则化&#…

PP强酸强碱氮气柜和普通氮气柜的区别及共同点

PP强酸强碱氮气柜通常采用聚丙烯&#xff08;PP&#xff09;材料制成&#xff0c;聚丙烯是一种耐腐蚀性强的塑料材质&#xff0c;能有效抵抗强酸、强碱、盐溶液等腐蚀性物质的侵蚀&#xff0c;不易老化&#xff0c;使用寿命长。因其优秀的化学稳定性和耐腐蚀性&#xff0c;特别…

2024第三届大学生算法大赛 真题训练一 解题报告 | 珂学家

前言 题解 这是第三届大学生算法大赛(第二届为清华社杯)的赛前练习赛一. 这是上界比赛的体验报告: 2023第二届“清华社杯”大学生算法大赛 解题报告(流水账版) | 珂学家&#xff0c;个人还是非常推荐这个比赛。 难度分布&#xff1a;4 easy/4 mid-hard/2 hard 赛前练习赛一…

15、Django Admin添加自定义字段功能

修改模型类HeroAdmin admin.register(Hero) class HeroAdmin(admin.ModelAdmin):change_list_template "entities/heroes_changelist.html"... # 此处原代码不动&#xff0c;只增加此前后代码def get_urls(self):urls super().get_urls()my_urls [path(immort…

Linux【2】文件目录-ls进阶

目录 ls 组合使用&#xff1a;ls -lha​编辑 ls 通配符 ls .是隐藏文件 ls -a可以显示所有文件包括隐藏文件 ls- l列表形式&#xff0c;详细信息 ls -l -h 大小更详细 组合使用&#xff1a;ls -lha ls 通配符 *任意长度 &#xff1f;一个字符 带扩展名 可选from…

开源 AI 智能名片 S2B2C 商城小程序在社区团购中的应用与价值

摘要&#xff1a;本文探讨了开源 AI 智能名片 S2B2C 商城小程序在社区团购中的重要作用。社区团购的团长角色多元&#xff0c;包括小区店主、水站与快递站站长、宝妈等&#xff0c;其用户基础广泛。优秀团长的专业引导和良好服务至关重要&#xff0c;而开源 AI 智能名片 S2B2C …