当前位置: 首页 > news >正文

链表

一、从尾到头打印链表

题目:输入一个链表,按链表从尾到头的顺序返回一个ArrayList。

解题思路:使用栈作为中转,可以实现倒置打印

classSolution {
public:vector<int> printListFromTailToHead(ListNode* head){//使用栈完成中转stack<int>s;vector<int>ArrayList;ListNode *p=head; //遍历指针while(p!=NULL){s.push(p->val); //入栈p=p->next;}//出栈int len=s.size();for(int i=0;i<len;i++){ArrayList.push_back(s.top());s.pop();}return ArrayList;}
};

二、链表中倒数第k个结点

题目描述:输入一个链表,输出该链表中倒数第k个结点。

解答思路:使用快慢指针。第一个指针先走k步,第二个指针再和第一个指针一起走,当第一个指针遍历到尾部时,第二个指针也就遍历到了第k个结点位置了。

/*
struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), next(NULL) {}
};*/classSolution {
public:ListNode* FindKthToTail(ListNode* pListHead, unsignedint k){if(pListHead==NULL||k==0)returnNULL;ListNode* first=pListHead;ListNode* second=NULL;if(k==0)returnNULL;for(int j=0;j<k-1;++j){if(first->next!=NULL)first=first->next;elsereturnNULL;}second=pListHead;while(first->next!=NULL){first=first->next;second=second->next;}return second;}
};

三、孩子们的游戏(圆圈中最后剩下的数字)

题目描述:每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去....直到剩下最后一个小朋友,可以不用表演,并且拿到牛客名贵的“名侦探柯南”典藏版(名额有限哦!!^_^)。请你试着想下,哪个小朋友会得到这份礼品呢?(注:小朋友的编号是从0到n-1)

如果没有小朋友,请返回-1

解题思路一:使用std::list来模拟一个环形链表。既然是链表,那么需要注意的就犹豫一下几点:

  • 环形结构,首尾相连

  • 删除当前节点时需要先保存后面的节点,保证不断链

这种方法的时间复杂度为

编辑,空间复杂度为

编辑。

classSolution {
public:intLastRemaining_Solution(int n, int m){if(n==0||m==0) return-1;list<int>numbers; //定义list模拟环形链表for(int i=0;i<n;i++) //将元素添加到list中numbers.push_back(i);list<int>::iterator current=numbers.begin(); //定义迭代器while(numbers.size()>1){//遍历第m个小朋友for(int j=1;j<m;j++){++current;if(current==numbers.end()) current=numbers.begin(); //模仿环的结构}list<int>::iterator next=++current; //用来保存后面的节点if(next==numbers.end()) next=numbers.begin(); //模仿环的结构current--;numbers.erase(current); //删除第m个小朋友current=next;}return *(current);}
};

解题思路二:使用递归公式进行计算。

编辑

classSolution {
public:intLastRemaining_Solution(int n, int m){if(n==0||m==0) return-1;int last=0;for(int i=2;i<=n;i++)last=(last+m)%i;return last;}
};

四、两个链表的第一个公共结点

题目描述:输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)

解题思路:先计算两个链表相差的部分,长的多走几步,等二者同步之后,再共同遍历。

/*
struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), next(NULL) {}
};*/classSolution {
public:intGetLength(ListNode* p){int len=0;ListNode* look=p;while(look!=nullptr){look=look->next;len++;}return len;}ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2){int len1=GetLength(pHead1);int len2=GetLength(pHead2);int gap=0;if(len1>len2){gap=len1-len2;for(int i=0;i<gap;i++){pHead1=pHead1->next;}}elseif(len1<len2){gap=len2-len1;for(int j=0;j<gap;j++){pHead2=pHead2->next;}}while(pHead1!=pHead2&&pHead1->val!=pHead2->val){pHead1=pHead1->next; pHead2=pHead2->next;}ListNode* pCommon=pHead1;return pCommon;}
};

相关文章:

链表

一、从尾到头打印链表题目&#xff1a;输入一个链表&#xff0c;按链表从尾到头的顺序返回一个ArrayList。解题思路&#xff1a;使用栈作为中转&#xff0c;可以实现倒置打印classSolution { public:vector<int> printListFromTailToHead(ListNode* head){//使用栈完成中…...

CSS 样式优先级

CSS 样式优先级决定了最终呈现在浏览器中的样式是哪一组样式&#xff0c;在多组样式中有冲突时&#xff0c;最终呈现在浏览器中的样式是具有最高优先级的样式。 CSS 样式优先级顺序如下&#xff1a; 内联样式 > 内部样式 > 外部样式 !important > 内联样式 > ID…...

SpingMVC获取请求参数

通过ServletAPI获取请求参数将HttpServletRequest作为控制器方法的形参&#xff0c;此时HttpServletRequest类型的参数表示封装了当前请求的请求报文的对象。html<form th:action"{/param/servletAPI}" method"post">用户名&#xff1a;<input ty…...

微搭使用笔记(二)微搭低代码平台介绍及基础使用

概述 官网地址&#xff1a; 官网 官方文档&#xff1a; 官方文档 FAQ: FAQ 腾讯云微搭低代码是一个高性能的低代码开发平台&#xff0c;用户可通过拖拽式开发&#xff0c;可视化配置构建 PC Web、H5 和小程序应用。支持打通企业内部数据&#xff0c;轻松实现企业微信管理、工…...

CountDownLatch的定义、使用 、原理

一、定义 CountDownLatch的作用很简单&#xff0c;就是一个或者一组线程在开始执行操作之前&#xff0c;必须要等到其他线程执行完才可以。我们举一个例子来说明&#xff0c;在考试的时候&#xff0c;老师必须要等到所有人交了试卷才可以走。此时老师就相当于等待线程&#xff…...

《Terraform 101 从入门到实践》 Terraform在公有云Azure上的应用

《Terraform 101 从入门到实践》这本小册在南瓜慢说官方网站和GitHub两个地方同步更新&#xff0c;书中的示例代码也是放在GitHub上&#xff0c;方便大家参考查看。 简介 Azure是微软的公有云&#xff0c;它提供了一些免费的资源&#xff0c;具体可以查看&#xff1a; https:/…...

别具一格,原创唯美浪漫情人节表白专辑,(复制就可用)(html5,css3,svg)表白爱心代码(3)

别具一格&#xff0c;原创唯美浪漫情人节表白专辑&#xff0c; (复制就可用)&#xff08;html5,css3,svg)表白爱心代码(3) 目录 款式三&#xff1a;心形实时显示认识多长时间桃花飞舞&#xff08;猫咪&#xff09;款 1、拷贝完整源代码 2、拷贝完整js代码 3、修改时间 4、…...

Linux 删除修改日期大于某一天的文件

在服务器运维过程中,我们往往会产生大量的日志文件. 如果日志文件命名能看出日志产生的时间,这些文件是很好删除的. 但有时,我们可能有成千上万的没有命名规律日志文件 下面的方法可以根据日志最后修改时间 批量删除这些文件 先给出完整命令: find /mydir -mtime 10 -name &…...

【算法题】1845. 座位预约管理系统

插&#xff1a; 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 坚持不懈&#xff0c;越努力越幸运&#xff0c;大家一起学习鸭~~~ 题目&#xff1a; 请你设计一个管理 n 个座位预约的系…...

【专业认知】保研北大金融 / 入职腾讯产品经理

2023.02.11 一. 朱博文学长分享——关于大学生活的一点思考 1. 自我介绍 大数据18级 经济学双学位 保研至北大金融硕士 “多思考、多感受、兼听则明” 2. 大学生活 2.1 为什么要上大学 1&#xff1a;追求美好生活的需要 “美好”难以量化&#xff0c;因为每个人对生活…...

OpenHarmony使用Socket实现一个UDP客户端详解

一、前言 我们在这里介绍Socket的使用,是为了后面的一篇文章实现设备配网做铺垫。 二、示例详解 点击获取BearPi-HM_Nano源码 ,以D3_iot_udp_client为例: 示例本身很简单,只需要修改 udp_client_demo.c 的2处代码,就能测试了: //连接WIFI,参数1是:WIFI名称,参数2是:…...

使用VUE自定义组件封装部门选择功能

背景 照惯例&#xff0c;先交待下背景&#xff0c;从真实需求出发&#xff0c;讲述实现效果、设计思路和实现方式。 软件系统中&#xff0c;会有一些常见常用的选择功能&#xff0c;如部门选择、人员选择等&#xff0c;用于填报表单&#xff0c;使用频率很高。直接使用一方面会…...

C语言基础应用(一)数据类型

一、数据类型 1、数据类型的分类 2、常量 常量是固定值&#xff0c;在程序执行期间不会改变。这些固定的值&#xff0c;又叫做字面量。 2.1 常量举例 // 整型常量 举例 /*718 十进制0213 八进制0x4b 十六进制30u 无符号整数30l 长整型30ul 无符号长整型*/ // 浮点常量…...

算法笔记(三)—— 桶排序及排序总结

堆 逻辑上是一棵完全二叉树&#xff08;依次遍满或者全满&#xff09;。 数组可以转为完全二叉树&#xff0c;完全二叉树某结点左孩子(2*i1)&#xff0c;右孩子(i*22)&#xff0c;父结点((i-1/)2)&#xff0c;根节点的父还是自己。 如何将数组转化为堆&#xff08;大根堆&…...

Linux入门篇(一)

Linux前言Linux初探Linux内核GNU实用工具shellLinux发行版bash shell 基础Linux文件系统Linux文件操作命令前言 在阅读诸如docker之类的书的时候&#xff0c;经常碰到Linux的知识。同时&#xff0c;大部分的盲区也是在Linux方面。因此就想稍微了解一下这个广为人使用的操作系统…...

HTTPSHandler SSL Error

我在服务器ubuntu中&#xff0c;尝试使用pip3&#xff0c;但是出现下面的报错 ImportError: cannot import name HTTPSHandler 通过查询资料&#xff0c;发现报错的原因是&#xff0c;该pip3.5中没有安装好openssl. 我尝试在python3.5中使用import ssl, 确实是会显示下面的报错…...

基于Android的高校食堂餐厅配送系统

需求信息&#xff1a; 商家客户端&#xff1a; 1&#xff1a;登录注册&#xff1a;用户可以通过自己的信息进行账号的注册 2&#xff1a;发布菜单&#xff1a;发布自己经营的美食信息 3&#xff1a;用户订单&#xff1a;查看用户的购买订单 4&#xff1a;订单配送&#xff1a;对…...

Java设计模式-02工厂模式

为什么需要工厂模式&#xff0c;其作用什么&#xff1f;如何实现&#xff0c;代码演示解析优缺点。Q1:为什么需要工厂模式&#xff1f;工厂模式的作用(优点)是什么&#xff1f; 解耦。把对象的创建和使用的过程分开。就是Class A 想调用 Class B &#xff0c;那么A只是调用B的…...

AXI-Lite 学习笔记

AXI-Lite 学习笔记 参考 FPGA&#xff1a;AXI_Lite总线基础2-1]、第二节 AXI总线介绍、ZYNQ PL与PS交互专题_哔哩哔哩_bilibili AXI-Lite总线系列1 - 基础知识_哔哩哔哩_bilibili AXI4 介绍 AXI4 是ARM公司提出的一种片内总线&#xff0c;描述了主从设备之间的数据传输方式。主…...

77页智慧城市顶层设计方案

【版权声明】本资料来源网络&#xff0c;知识分享&#xff0c;仅供个人学习&#xff0c;请勿商用。【侵删致歉】如有侵权请联系小编&#xff0c;将在收到信息后第一时间删除&#xff01;完整资料领取见文末&#xff0c;部分资料内容&#xff1a;篇幅有限&#xff0c;无法完全展…...

3分钟掌握完全离线的实时语音转文字:TMSpeech让你彻底告别云端依赖

3分钟掌握完全离线的实时语音转文字&#xff1a;TMSpeech让你彻底告别云端依赖 【免费下载链接】TMSpeech 腾讯会议摸鱼工具 项目地址: https://gitcode.com/gh_mirrors/tm/TMSpeech 在数字时代&#xff0c;语音转文字已成为现代办公和学习的高效助手&#xff0c;但你是…...

新手避坑指南:ICC LAB2 Design Planning 从加载设计到写出DEF的完整流程复盘

ICC LAB2 Design Planning全流程深度解析&#xff1a;从数据加载到DEF输出的实战避坑指南 当你第一次打开ICC工具面对LAB2的Design Planning任务时&#xff0c;是否感觉像被扔进了一个满是按钮的控制室&#xff1f;每个命令似乎都重要&#xff0c;但又不清楚它们如何串联成完整…...

别再复制粘贴了!手把手教你封装一个可复用的Qt文本编辑器核心组件类

从零封装高复用Qt文本编辑器核心类&#xff1a;工程化实践指南 在Qt开发中&#xff0c;文本编辑器是最常见的功能需求之一。许多开发者习惯将所有逻辑堆砌在MainWindow类中&#xff0c;导致代码臃肿、难以维护和复用。本文将带你从工程化角度重构文本编辑器&#xff0c;将其核心…...

共筑智能传播信息安全域,新华社国家重点实验室与北京时光不语达成合作

新华社媒体融合生产技术与系统国家重点实验室与北京时光不语科技有限公司&#xff08;TIMUS.AI&#xff09;正式建立研发生态伙伴关系&#xff0c;并联合推出面向智能传播环境的“新华智信感知平台”&#xff0c;深化智能传播领域科研创新与成果转化&#xff0c;共同构建负责任…...

书匠策AI课程论文一键生成?我替你们踩了一遍,真香预警!

各位论文困难户们&#xff0c;先别划走&#xff01; 今天不聊别的&#xff0c;就聊一个让我这个老博主都直呼"离谱"的东西——书匠策AI的课程论文功能。我知道你们一看到AI写论文就条件反射觉得是割韭菜&#xff0c;但这次&#xff0c;我是真的被圈粉了。 先说结论…...

osModa:基于NixOS与AI智能体的下一代服务器操作系统

1. 项目概述&#xff1a;为AI智能体而生的操作系统如果你和我一样&#xff0c;长期在服务器运维和AI应用部署的一线摸爬滚打&#xff0c;那你一定对这样的场景深有体会&#xff1a;凌晨三点&#xff0c;手机突然响起刺耳的告警&#xff0c;你睡眼惺忪地爬起来&#xff0c;SSH连…...

揭秘AI教材生成秘诀!AI教材写作工具助力,低查重完成20万字教材!

教材编写难题与AI工具解决方案 在编写教材时&#xff0c;如何才能精准满足不同的需求呢&#xff1f;不同学段的学生在认知能力上存在显著差异&#xff0c;内容过于复杂或简单都不合适&#xff1b;而在课堂教学和自主学习等不同场景下&#xff0c;对教材的要求又各不相同&#…...

RAD-NeRF:面向实时人像合成的神经辐射场高效架构

1. 项目概述&#xff1a;当NeRF遇上实时人像&#xff0c;RAD-NeRF到底在解决什么问题&#xff1f;我第一次看到“Efficient NeRFs for Real-Time Portrait Synthesis (RAD-NeRF)”这个标题时&#xff0c;手边正调试一个跑在RTX 4090上的标准NeRF模型——单帧渲染耗时23秒&#…...

开源创意资产管理平台Buddy:设计团队协作与版本控制实践

1. 项目概述&#xff1a;一个为创意协作而生的开源平台如果你在团队里负责过创意项目&#xff0c;无论是UI设计、视频剪辑还是产品原型开发&#xff0c;大概率都经历过这样的混乱&#xff1a;设计稿的版本号从V1.0一路飙升到V12_final_really_final.psd&#xff1b;开发同学在群…...

Muse:现代化多仓库管理工具,提升开发效率与协作体验

1. 项目概述&#xff1a;一个面向开发者的现代化代码库管理工具最近在和一些团队交流时&#xff0c;发现一个挺普遍的现象&#xff1a;大家手头的项目代码库越来越多&#xff0c;有的是自己维护的开源项目&#xff0c;有的是公司内部的核心业务模块&#xff0c;还有一堆实验性的…...