个人主页:元清加油_【C++】,【C语言】,【数据结构与算法】-CSDN博客个人专栏:http://t.csdnimg.cn/D9LVS 前言:这个专栏主要讲述递归递归、搜索与回溯算法,所以下面题目主要也是这些算法做的 我讲述题目会把讲解部分分为3个部分:1、题目解析2、算法原理思路讲解 3、代码实现 一、两两交换链表中的节点题目链接:两两交换链表中的节点题目:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。示例1:输入:head=[1,2,3,4]输出:[2,1,4,3]示例2:输入:head
本人能力有限,发出只为帮助有需要的人。以下为实验课的复盘,内容会有大量失真,请多多包涵。1.双手剑士的最优搭配每把剑有攻击力和防御力两个属性。双手剑士可以同时拿两把剑,其得到攻击力为两把剑中的攻击力的最大值,防御力为两把剑中的防御力的最小值。现在想让双手剑士的攻击力和防御力之和最大。输入n作为剑的个数,再输入2n分别对应每把剑的攻击力和防御力,要求输出最优解为哪两把剑(当攻击力和防御力之和相同时优先选择编号靠前的两把剑)输入:31045 1078输出:12题解为#includeintmax(intx,inty)//最大值函数{if(x>y)returnx;returny;}intmin(int
1.单值二叉树 965. 单值二叉树https://leetcode.cn/problems/univalued-binary-tree/ 先判断这棵树是否为空,如果是空树则是true。再判断左子树是否为空,并且左子树的值val和当前节点的val不相同,如果这左子树不为空且val不等于root的val则返回false,再使用相同方式判断右子树。最后递归一下左右子树即可,只有左右子树有一个返回false,则整体返回false。boolisUnivalTree(structTreeNode*root){if(root==NULL)returntrue;if(root->left&&root->le
反转链表1.常规思路解题2.常规思路解题方法的优化3.递归解题方法4.指针思想解决问题5.指针方法另一种思路题目描述:给你单链表的头节点head,请你反转链表,并返回反转后的链表。示例:输入:head=[1,2,3,4,5]输出:[5,4,3,2,1]提示代码:/***Definitionforsingly-linkedlist.*publicclassListNode{*intval;*ListNodenext;*ListNode(){}*ListNode(intval){this.val=val;}*ListNode(intval,ListNodenext){this.val=val;th
✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟追风赶月莫停留🌟🌟🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🌟🌟平芜尽处是春山🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅📝数据结构OJ题✏️移除元素✏️删除重复项✏️合并两个数组✏️移除元素题目链接:原地移除数组中所有的元素val,要求时间复杂度为O(N),空间复杂度为O(1)我在这里给大家提供了常规的三种解法,第一种解法是错误示范解法一:大家首先肯定想到的是边遍历边删除,当然这也是常
1.双向链表的概念双向链表就是带头双向循环链表我们在学完单链表之后,就感觉这个非常简单了,他的主要表现就是拥有头节点,链表永不为空,不需要二级指针;可以通过一个节点找到上一个或者下一个节点;头尾相连呈环状。他主要结构是由prev、next、data,这三个结构组成,通过prev找到前一个节点,next就不用多说了。如图所示 不多废话,直接上代码2.双向链表的实现2.1结构设计typedefintLTDataType;typedefstructListNode{ structListNode*next; structListNode*prev; LTDataTypedata;}LTNode;2.
导言:线性表(linearlist)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列...线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。而线性表有两种非常重要的结构,顺序表和链表。本篇文章主要对顺序表和链表的简单实现以及java中与之对应的集合进行一个介绍。目录导言:正文:一.顺序表1.概念:2.顺序表的特点:3.顺序表的自实现:4.java中对应的集合:5.小结:二.链表1.概念:2.链表的特点:3.自实现:4.java中对应的集合:
编程题:题一:字符串相加415.字符串相加-力扣(LeetCode)思路一:第一步:需要获取字符串的两个尾节点下标;第二步:创建用于记录进位数、获得的字符串的变量;第三步:只要有进位或还有数没有加完继续循环:利用三目运算:有符号+符号,无符号+0;第四步:最后将得到的字符串逆置,就是需要的结果。classSolution{public:stringaddStrings(stringnum1,stringnum2){//获取字符串的尾节点intit1=num1.size()-1;intit2=num2.size()-1;//记录进位数intcount=0;//获得的字符串strings1="";
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档目录前言1.双向链表的结构2.双向链表的实现2.1头文件——双向链表的创建及功能函数的定义2.2源文件——双向链表的功能函数的实现2.3源文件——双向链表功能的测试4.双向链表的操作示意图3.顺序表和双向链表的优缺点分析总结前言世上有两种耀眼的光芒,一种是正在升起的太阳,一种是正在努力学习编程的你!一个爱学编程的人。各位看官,我衷心的希望这篇博客能对你们有所帮助,同时也希望各位看官能对我的文章给与点评,希望我们能够携手共同促进进步,在编程的道路上越走越远!提示:以下是本篇文章正文内容,下面案例可供参考1.双向链表的结构注意:这里的
目录一.双向链表的概念二.双向链表的数据结构三.双向链表的实现节点的插入头插法尾插法任意位置插入节点的删除删除链表中第一次出现的目标节点删除链表中所有与关键字相同的节点节点的查找链表的清空链表的长度四.模拟实现链表的完整代码前言:在上一篇文章中,我们认识了链表中的单链表,而本篇文章则是介绍线链表中的另一个结构双向链表,有兴趣的朋友们可以点击了解:图文详解单链表的各种操作一.双向链表的概念双向链表(DoublyLinkedList)是一种数据结构,它与单向链表相似,但每个节点不仅包含指向下一个节点的指针,还包含指向上一个节点的指针。双向链表的每个节点通常包含以下两个指针:prev:指向上一个节点