算法
乐小琛
大学毕业生
展开
-
两个链表生成相加链表
题目:假设链表中每一个节点的值都在 0 - 9之间,那么链表整体就可以代表一个整数。给定两个这种链表,请生成代表两个整数相加值的结果链表。例如:链表 1为 9->3->7,链表 2为 6->3,最后生成新的结果链表为 1->0->0->0。算法思想:分别取两个链表的最后一个结点的值,相加并且设置一个进位标志位flag(与大数加法思想类似),每相加一次,创建一个新结点并赋值,然后采用头插法创建新的链表。其中的难点在于取链表的最后一个结点,每次取结点均需...原创 2021-04-01 14:41:17 · 488 阅读 · 0 评论 -
寻找两个字符串的最长公共子串
题目:给定两个字符串str1和str2,输出两个字符串的最长公共子串[题目保证str1和str2的最长公共子串存在且唯一]。实例:输入"1AB2345CD","12345EF" 返回值:"2345"算法思想:本题调用了String类的Substring方法,及设置两个int型变量:start,end。调用Sunstring(start,end)来截取字符串,获得子字符串。若子字符串包含在另一个字符串当中,则保存此子字符串,且继续增加子字符串的长度(end++),若不包含在内,保持子字符串的长度不变,原创 2021-03-31 10:39:43 · 2162 阅读 · 0 评论 -
二叉树之字形层次遍历
题目:给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)例如:给定的二叉树是{3,9,20,15,7,#,#},使用之字遍历的结果为[[3],[20][9],[15][7]]算法思想:为每一行建立newLIst与newLine,和行标识符flag(flag=0:倒着输入某一行,flag=1:正着输入)根据flag将结点的值以数组的形式存入到newLine之中,之后在添加到大数组result中将此行结点的左右孩子添加到newlist之中,为遍历下一行原创 2021-03-30 23:08:04 · 377 阅读 · 0 评论 -
大数加法
题目:以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。(字符串长度不大于100000,保证字符串仅由'0'~'9'这10种字符组成)算法思想:将字符串类型改为数组char1于char2(方便对字符串的每一位进行计算操作),引进carry来记录是否有进位(用除法取整来实现),将char1与char2的数据类型分别由char转换为int型,在进行计算,用rem记录余数,carry记录商(及进位),循环操作,直至i,j,carry均为0即可。注:用到了StringBuffer的ap原创 2021-03-29 11:41:01 · 168 阅读 · 1 评论 -
合并二叉树
题目:已知两颗二叉树,将它们合并成一颗二叉树。合并规则是:都存在的结点,就将结点值加起来,否则空的位置就由另一个树的结点来代替。题解如下图:本题采用递归的方法来实现(c++)...原创 2021-03-11 21:32:28 · 590 阅读 · 0 评论 -
调整数组,使奇数在偶数前面
题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。算法思想:采用空间换时间的方法(较为麻烦,但容易理解),创建一个新数组a,遍历两次原数组,第一次遍历将奇数存入新数组a中,第二次遍历将偶数存入a中。...原创 2021-03-09 21:39:30 · 160 阅读 · 0 评论 -
满二叉树已知先序,求后序。
哈哈哈,基金这两天没眼看了。现在看啥都是绿的。学习之前先娱乐一下。题目:已知满二叉树的先序序列,求其后序序列。算法思想:其实做这类题型的时候,咱们可以找一个具体的实例,来找相应的规律。举个例子:先根:1245367后根:4526731由例子可以很清晰的看出来,先根的第一个结点是后根的最后一个结点,先根序列除去根节点...原创 2021-03-08 22:00:41 · 1281 阅读 · 3 评论 -
根据树的先序遍历与中序遍历求出二叉树
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。算法思想:(tips:前序遍历,先 根节点在左节点在右节点;中序遍历,先左节点在根节点最后右节点)先序遍历的第一个结点必为根节点(设其为结点i),在中序遍历中找到i的位置,i之前的结点为根节点的左子树,i之后的结点为根节点的右子树,从而分离出来了左右子树,在原创 2021-03-07 22:38:45 · 1145 阅读 · 0 评论 -
螺旋矩阵
题目:给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素。算法思想:遍历一圈为一个大循环(例如下图:红色圈为一个循环,蓝色一圈也为一个循环【少边也无所谓】)如图:{注:循环个数以本图为准,具体问题具体分析}每个大循环又包含4(3)个小循环(从左至右,从上到下,从右至左,从下至上的4个for循环)在设置top bottom left right 四个参数来控制for循环遍历的数组长度(关键)。循环退出条件:top>bottom 或 left>right.用原创 2021-03-06 22:11:13 · 507 阅读 · 0 评论 -
两个链表找第一个公共节点
题目:输入两个链表,找出它们的第一个公共结点思想:设两个链表分别为p,q.将p拼接到q之后,将q拼接到p之后,得到两个新的等长链表p1,q1.在从头至尾依次对比两链表结点 第一个相等的点即为所要找的结点for examp:p= 1234 q= 98764 拼接之后为:p1=123498764 q1=987641234 两个链表指针依次对比,可...原创 2021-03-05 20:24:11 · 328 阅读 · 1 评论