牛客270908258号
牛客270908258号
全部文章
分类
题解(15)
归档
标签
去牛客网
登录
/
注册
牛客270908258号的博客
全部文章
(共9篇)
题解 | #从中序与后序遍历序列构造二叉树#
思路: 1.中序遍历顺序:左根右;后序遍历顺序:左右根;根据给出的后序遍历数组可知,数组末元素为根结点值;取出该结点,作为根结点的值。 2.根据中序遍历顺序,找出根结点位置rootIdx;在中序遍历数组中,该结点左边元素为左子树结点值,右边为右子树结点值;在后序遍历数组中,可知从0到rootIdx为...
Swift
2022-02-02
1
544
题解 | #划分链表#
思路: 1.把链表可以划分为两个新链表,小于x的结点,在链表1;大于x的结点在链表2 2.声明新链表1和链表2,遍历原始链表,用temp暂存当前结点,然后,后移结点;若结点值小于x,则把该结点加入新链表1末尾.并且新链表尾部指针指向新结点;若结点值大于等于x,则把该结点加入新链表2末尾.并且新链表尾...
Swift
2022-02-01
0
348
题解 | #删除有序链表中重复的元素-II#
1.考虑到删除结点,使用preNode前驱结点记录当前待删除结点的前1个结点。考虑到首结点开始可能需要删除,前驱结点可指向哑元节点 2.遍历链表,当出现当前结点值等于下一个结点值,作下标记flag,表示有节点需要删除。在遍历时,如果当前结点与下一结点值不等时,检查删除标记是否为真,若为真;则前驱结点...
Swift
2022-01-27
0
267
题解 | #链表的奇偶重排#
思路: 1.奇数位和偶数位组成的新链表,分别使用哑元结点记录,并分别使用指针记录新链表的最后1个结点。 2.遍历原始链表,每次取两个结点,奇数结点放到奇数位新链表末尾,偶数结点放到偶数新链表末尾。直到遍历结束。 3.若原始链表结点为奇数,把链表最后1个结点添加到奇数位新链表末尾。奇数位新链表表尾指针...
Swift
2022-01-27
0
305
题解 | #判断一棵二叉树是否为搜索二叉树和完全二叉树#
思路: 1.从根结点到叶子结点为一条路径,每向下一级,上一层乘以10,累加当前结点值。 2.那按深度优化遍历时,根结点值+上一层级*10为当前累加值; 3.若该结点无左结点和右结点,则返回该累加值。 4.若该结点有子结点,返回左子树和右子树相加的总和。
Swift
2022-01-26
0
299
题解 | #判断一个链表是否为回文结构#
思路 1.判断链表是否回文结构,先找到链表中间结点,把链表分割成两部分;我们可以使用快慢指针来确定链表中间结点。 2.使用快慢指针确定链表中间结点;把后半部分的链表进行反转。 3.把链表前半部分和反转后的后半部分链表结点值进行比较,若值不相等,直接返回false;否则,继续遍历这两半部分链表。若遍历...
Swift
2022-01-24
0
274
题解 | #重建二叉树#
思路: 1.先进行基本的检验,前序与中序遍历数组长度必须相同,必须大于0;如果数组中只有一个元素,直接返回该结点。 2.根据前序遍历结果,确认根结点值,为数组中第一个元素;使用该元素,创建根结点; 3.根据中序遍历的结果,查找根结点元素在中序遍历数组中的位置;该位置左侧为左子树,右侧为右子树; 4....
Swift
2022-01-21
0
290
题解 | #链表中的节点每k个一组翻转#
思路: 1.先遍历链表,对链表结点计数,如果等于k,则该区间的链表节点可以翻转; 2.若遍历链表结束,计数小于k,说明没有需要翻转的链表节点。直接返回; 3.对于需要翻译的链表节点区间,进行链表反转;并保存反转后的链表 4.原始链表头部结点,指向余下的链表区间;递归余下的链表区间 5.返回翻转后的链...
Swift
2022-01-21
0
319
题解 | #合并两个排序的链表#
思路: 1.先进行简单的校验,如果链表都为空,则返回空;如果其中1个为空,返回另一个链表。 2.声明新链表哑元结点,并声明尾结点指向新链表的尾部结点; 3.对两个非空链表进行遍历,若链表1的的当前结点值大于链表2的当前结果值,则暂存链表2的当前结点,链表2结点后移;(否则,暂存链表1的当前结点,链表...
Swift
2022-01-21
0
378