草庐IT

leetcode刷题之回文链表

全部标签

LeetCode | 225. 用队列实现栈

LeetCode|225.用队列实现栈OJ链接此题可以用两个队列去实现一个栈,每次始终保持一个队列为空,入栈操作相当于给非空队列进行入队操作入数据,把不为空的队列入出数据,把不为空的队列数据导入为空,直到最后一个出栈操作相当于非空队列的队尾元素出队,此时需要把非空队列除最后一个元素之外的其余元素入队到空队列,然后出队最后一个队尾元素代码如下:#include#include#include#includetypedefintQDataType;typedefstructListQNode{ QDataTypeval; structListQNode*next;}QNode;typedefstr

C语言百日刷题第九天

前言今天是刷题第9天,放弃不难,但坚持一定很酷~快来跟我一起刷题吧。加油,一起努力进步C语言百日刷题第九天前言76.计算偶数的所有质因子77.提取不重复的整数78.二进制中1的个数79.猴子分桃80.百钱买百鸡76.计算偶数的所有质因子输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)输入一个整数输出描述:按照从小到大的顺序输出它的所有质数的因子,以空格隔开。示例1输入:180输出:22335先普及一下什么叫做质因子#includeintmain(){intn;scanf("%d",&n);//最大除数应该是小于等于输入的自然数的平方根for(inti=2;isqrt(n)

LeetCode-Java:88合并两个有序数组

题目:给你两个按非递减顺序排列的整数数组nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目。请你合并nums2到nums1中,使合并后的数组同样按非递减顺序排列。注意:最终,合并后数组不应由函数返回,而是存储在数组nums1中。为了应对这种情况,nums1的初始长度为m+n,其中前m个元素表示应合并的元素,后n个元素为0,应忽略。nums2的长度为n。示例1:输入:nums1=[1,2,3,0,0,0],m=3,nums2=[2,5,6],n=3输出:[1,2,2,3,5,6]解释:需要合并[1,2,3]和[2,5,6]。合并结果是[1,2,2,3,5,6]

随机链表的复制

文章目录🍉前言🍉题目🍉分析🍉思路一:暴力解法🍉思路二:很绝的办法🍉前言果然,力扣的简单题不一定简单,但是中等和较难的题一定很麻烦。这道题相当综合,对于思路二,如果看完思路后能写出代码,那说明你链表掌握得相当熟练了。🍉题目题目链接🍉分析题干很长,不过总结下来就很简单的几句话:有一链表,它每个节点除了有next,还有个random指针,random指向哪里?不知道,可能是其他节点,也可能指向NULL。然后现在要你对这样一个链表进行拷贝,得到一个新链表,新链表中每个节点random的指向和原链表一模一样。🍉思路一:暴力解法先复制原链表,但不复制random指针,得到一个新链表。接下来要复制rando

算法leetcode|89. 格雷编码(rust重拳出击)

文章目录89.格雷编码:样例1:样例2:提示:分析:题解:rust:go:c++:python:java:89.格雷编码:n位格雷码序列是一个由2n个整数组成的序列,其中:每个整数都在范围[0,2n-1]内(含0和2n-1)第一个整数是0一个整数在序列中出现不超过一次每对相邻整数的二进制表示恰好一位不同,且第一个和最后一个整数的二进制表示恰好一位不同给你一个整数n,返回任一有效的n位格雷码序列。样例1:输入: n=2 输出: [0,1,3,2] 解释: [0,1,3,2]的二进制表示是[00,01,11,10]。 -00和01有一位不同 -01和11有一位不同 -11和10有一位不同 -1

【刷题专栏—突破思维】LeetCode 138. 随机链表的复制

前言随机链表的复制涉及到复制一个链表,该链表不仅包含普通的next指针,还包含random指针,该指针指向链表中的任意节点或空节点。文章目录原地修改链表题目链接:LeetCode138.随机链表的复制原地修改链表题目介绍:给你一个长度为n的链表,每个节点包含一个额外增加的随机指针random,该指针可以指向链表中的任何节点或空节点。构造这个链表的深拷贝。深拷贝应该正好由n个全新节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的next指针和random指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点。

数据结构之双向带头循环链表函数功能实现与详细解析

个人主页:点我进入主页专栏分类:C语言初阶    C语言程序设计————KTV    C语言小游戏   C语言进阶C语言刷题    数据结构初阶欢迎大家点赞,评论,收藏。一起努力,一起奔赴大厂。目录1.前言2.带头双向循环链表函数实现3.总结1.前言    在前面我们写过单链表,循环链表的博客,今天我主要给大家来带关于双向带头循环链表函数的功能与实现,双向带头循环链表相对于单链表,循环链表非常的容易实现,他的函数的功能和单链表,循环链表一样,如果你想要快速实现一个链表的所有功能,带头双向循环链表非常的容易,接下来让我们看看带头双向链表的奥妙把,看完你绝对会佩服写出这种结构的人。2.带头双向循环

Leetcode hot100之“结合递归+二分“题目详解

1总结题目215(“数组中的第K个最大元素”)和题目4(“寻找两个正序数组的中位数”)之间的联系主要体现在它们都涉及到寻找一个有序集合中的第k个元素的问题。尽管这两个问题的具体应用场景和所处理的数据结构不同,它们共享相似的算法思想和技术。题目215-数组中的第K个最大元素此题的解决方案涉及到快速选择算法,这是快速排序的一个变体。快速选择算法通过选择一个枢轴来划分数组,并基于枢轴的位置来决定继续在左边或右边搜索目标元素。该方法的目标是找到数组中第k个最大的元素。题目4-寻找两个正序数组的中位数在这个问题中,目标是找到两个有序数组合并后的中位数。解决方案同样涉及到一种选择方法,即在两个数组中找到第

初识数据结构:链表实现图书信息管理系统(C语言,仅供参考)

目录1.创建表结构2.创建表3.打印链表4.查找功能的实现 5.插入功能的实现6.删除功能的实现 7.修改功能的实现   8.计数功能的实现  9.排序功能的实现 10.封装图书信息管理系统1.创建表结构创建书籍信息结构体和每个结点的结构体structBook{ charid[20];//ISBN charname[50];//书名 intprice;//定价};//创建书籍信息结构体typedefstructLNode{ structBookdata;//书籍信息结构体 structLNode*next;//指向下一元素指针}LNode,*LinkList;2.创建表前插法创建单链表,建立n

「题解」相交链表

🍉题目题目链接🍉解析“提示”部分有提示链表数不为零,所以讨论链表为空的情况。最简单粗暴的思路就是:遍历链表,先使用循环遍历A链表,然后嵌套循环遍历B,比对A、B是否存在地址相同的节点,若有,则第一个这样的节点就是相交的起点。这里的思路就是比对地址,我们不能比较节点值是否相等,毕竟不同节点的值可以相等但是这样的时间复杂度为O(N^2),显然不是最优解法。下面来看比较好的解法。知道大思路是比较地址相不相等之后,还有一个问题:两个链表的长度不一样。这个问题倒是不难解决,我们直接让长的链表先走,它比短的链表多几个节点,就先走几个节点,既然如此,那先来获取链表长度吧。intlen1=0,len2=0;L