草庐IT

leetcode刷题之回文链表

全部标签

【2023蓝桥杯】刷题笔记(C语言)

1、字符串包含最多的字符及其个数#includeintmain(){inti;chararr[1000]={0};//定义字符串数组arr,初始化为0gets(arr);//从键盘输入字符串给arr//printf("%s\n",arr);//输出字符串数组//for(i=0;itake[max])//找出次数最大的数。A从1开始,因为max初试为0{max=A;}}printf("%c\n%d",'a'+max,take[max]);return0;}2、输出数组的三种方法下标法#includevoidmain(){inti;inta[10]={1,2,3,4,5,6,7,8,9,10};f

【牛客面试必刷TOP101】Day18.BM14 链表的奇偶重排和BM16 删除有序链表中重复的元素-II

作者简介:大家好,我是未央;博客首页:未央.303系列专栏:牛客面试必刷TOP101每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!!!!文章目录前言一、链表的奇偶重排题目描述题目解析二、删除有序链表中重复的元素-II题目描述题目解析总结前言一、链表的奇偶重排题目描述描述:给定一个单链表,请设定一个函数,将链表的奇数位节点和偶数位节点分别放在一起,重排后输出。注意:是节点的编号而非节点的数值。数据范围:节点数量满足 0≤n≤10^5,节点中的值都满足 0≤val≤1000;要求:空间复杂度O(n),时间复杂度O(n)。示例1:示例2:备注:链表长度不大于200000。每个数范围均

【树】建立二叉链表存储的二叉树+遍历二叉树(先序、中序、后序、层序)

建立二叉链表存储的二叉树+遍历二叉树(先序、中序、后序、层序)1.建立二叉链表存储的二叉树1-1.原理二叉树的构建利用了递归的原理,在按先序序列构建二叉树时,为了能让电脑知道每个结点是否有左右孩子,我们要对原二叉树进行扩展,明确表示每个结点的左右孩子,若当前结点没有左右孩子,我们用’#'表示。由普通二叉树---->扩展二叉树,如下图:此时当我们按先序序列构建上面的二叉树时,应输入的序列为:AB#D##C##1-2.代码voidCreateBiTree(BiTree*T)//二叉树的构造{charch;scanf("%c",&ch);if(ch=='#')*T=NULL;//#表示当前结点为空e

c++ - C++ 中的双向链表

我有一个作业要求我们实现一个双向链表类。出于某种原因,他们将节点struct定义如下:structnode{node*next;node*prev;T*o;};在我看来,如果结构成员“数据”不是指针,那么编写类会容易得多。不用说我不能改变它,所以我将不得不解决它。我尝试实现将元素添加到列表开头的方法,如下所示:templatevoidDlist::insertFront(T*o){node*np=newnode;Tval=*o;np->o=&val;np->prev=NULL;np->next=first;if(!isEmpty()){first->prev=np;}else{last

LeetCode 面试题 08.02. 迷路的机器人

文章目录一、题目二、C#题解一、题目  设想有个机器人坐在一个网格的左上角,网格r行c列。机器人只能向下或向右移动,但不能走到一些被禁止的网格(有障碍物)。设计一种算法,寻找机器人从左上角移动到右下角的路径。  网格中的障碍物和空位置分别用1和0来表示。  返回一条可行的路径,路径由经过的网格的行号和列号组成。左上角为0行0列。如果没有可行的路径,返回空数组。示例1:输入:[[0,0,0],[0,1,0],[0,0,0]]输出:[[0,0],[0,1],[0,2],[1,2],[2,2]]解释:输入中标粗的位置即为输出表示的路径,即0行0列(左上角)->0行1列->0行2列->1行2列->2行

【数据结构】链表经典OJ题,常见几类题型(二)

目录题型三:链表相交,找相交节点思路解析OJ题实例解题代码题型四:链表带环,找入环节点思路解析OJ实例解题代码题型三:链表相交,找相交节点思路解析看到这类题型首先要判断链表是否相交,而相交条件:两链尾部节点相同(地址相同,val值相同,next相同)。这样我们便可找到两链表的尾节点并判断这两个节点地址是否相同,若相同则两链表相交。上面这种情况两链表呈'Y'型,那么我们想一下两链表相交是否可以呈'X'型呢?如上图所示如果两链表相交呈'X'型的话,相交节点的next就会指向两个节点,这并不符合单链表的定义。那么在判断了相交链表后,如何找到相交节点呢?在我们找尾节点时,我们可以顺便计算两链表的长度,

顺序表与链表的区别

目录一、顺序表和链表的比较顺序表优点:缺点:链表优点缺点二、顺序表和链表的区别1.顺序表和链表都具有增、删、查、改功能,但算法复杂度却不相同。2、从数据元素存储的内存角度来看三、顺序表与链表选取方案一、顺序表和链表的比较顺序表顺序表的特点是逻辑上相邻数据元素,物理存储位置相邻,并且顺序表的存储空间需要预先分配,存储空间是静态分配的。 优点:顺序表具有按数组下标随机访问的特点。不用为表示节点间的逻辑关系而增加额外的存储开销缺点:在顺序表中做插入、删除操作时,需要遍历数组元素,当数组元素较大时,顺序表效率低。静态分配,程序执行之前必须明确规定存储规模预先分配足够大的存储空间,估计过大,可能会导致顺

Leetcode—765.情侣牵手【困难】

2023每日刷题(二十七)Leetcode—765.情侣牵手并查集+置换环思路参考自ylb实现代码classSolution{public:intminSwapsCouples(vectorint>&row){intn=row.size();intlen=n/2;vectorint>p(len);iota(p.begin(),p.end(),0);functionint(int)>find=[&](constint&x){if(x!=p[x]){p[x]=find(p[x]);}returnp[x];};for(inti=0;in;i+=2){intleft=row[i]/2;intright

算法通关村第一关——链表青铜挑战笔记

1、链表的概念1.1单向链表链表(linkedlist)是一种在物理上非连续、非顺序的数据结构,由若干个节点node构成,每个节点node有指向下一节点的指针,从头节点开始,一个节点一个节点的连到最后一个节点,最后一个节点指向null,如下图所示:注意,next只能指向一个后继节点,如下图所示的这种情况就不属于单链表但是多个节点可以指向同一个节点,如下图所示:1.2双向链表双向链表比单向链表稍微复杂一点,它的每一个节点除了拥有data和next指针,还拥有指向前置节点的prev指针,如下图所示2、链表的相关概念节点与头节点、尾节点在链表中,每个点都是由存放数据的变量data和指向下一节点的指针

数据结构—LinkedList与链表

目录一、链表1. 链表的概念及结构1.单向或者双向2.带头或者不带头3.循环或者非循环二.LinkedList的使用 1.LinkedList概念及结构2.LinkedList的构造3. LinkedList的方法三.ArrayList和LinkedList的区别 一、链表1. 链表的概念及结构        链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的   data表示数据;next表示指针,它总是指向自身的下一个结点,对于只有一个结点的存在,这个next指针则永远指向自身,对于一个链表的尾部结点,next永远指向开头。  注意:从上图可看出,链