- 博客(9)
- 收藏
- 关注
原创 剑指offer--重建二叉树
题目: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 思路: 首先根据前序遍历确定根结点(前序遍历的第一个结点),再扫描中序遍历序列,找到根节点的位置。根据中序遍历特点,在根结点的值前面的数字都是左子树结点的值,位于其后面的数字都是右子树结点的值。这样就可以 分别找打左、右子树的前序遍历序列和中序遍历序列,我们可以用同
2020-06-06 19:30:59 124
原创 剑指offer-- 替换空格
题目: 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 思路: 我们可以先遍历一次字符串,这样就能统计出字符串中空格的总数,并可以由此计算出替换之后的字符的总长度。每替换一个空格,长度增加2,因此替换以后字符串的长度等于原来的长度加上2乘以空格数。 我们从字符串的后面开始复制和替换。首先准备两个指针,P1和P2。(a)P1指向原始字符串的末尾,而P2指向替换之后的字符串的末尾。(b)依次复制字符串
2020-06-06 18:30:30 162
原创 剑指offer-- 二维数组中的查找
在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 **思路:**首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束;如果该输在大于要查找的数字,剔除这个数字所在的列;如果该数字小于要查找的数字,剔除这个数字所在的行。也就是说如果要查找的数字不在数组的 右上角,则每一次都在数组的查找范围中剔除一行或者一列,这样每一步都可以缩小查找的范围,知道找到要查找的数字,
2020-06-04 22:13:34 325
原创 剑指offer--从头到尾打印链表
题目: 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 思路: 遍历的顺序是从头到尾的顺序,可输出的顺序却是从尾到头。也就是说第一个遍历到的结点最后一个输出,而最后一个遍历到的结点第一个输出。这就是典型的“后进先出”,我们可以用栈实现这种顺序。每经过一个结点的时候,把该结点放到一个栈中。当遍历完整个链表后,再从栈顶开始逐个输出结点的值,此时输出的结点的顺序已经反转过来了。 代码: class Solution { public: vector<int> printList
2020-06-06 19:22:08 127
原创 一张图彻底理解并发与并行的区别
并行是指在同一时刻,有多条指令在多个处理器上同时执行。 并发是指在同一时刻,只能有一条指令执行,但多个进程指令被快速轮换执行,使得在宏观上具有多个进程同时执行的效果。 ...
2020-04-01 21:16:08 287
原创 两个有序链表序列的合并
本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。 函数接口定义: List Merge( List L1, List L2 ); 其中List结构定义如下: typedef struct Node *PtrToNode; struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode Next; /*...
2020-03-31 18:51:41 174
原创 二分查找
本题要求实现二分查找算法。 函数接口定义: Position BinarySearch( List L, ElementType X ); 其中List结构定义如下: typedef int Position; typedef struct LNode *List; struct LNode { ElementType Data[MAXSIZE]; Position Last; ...
2020-03-30 19:17:24 581 1
原创 最大子列和扩展问题
Maximum Subsequence Sum Given a sequence of K integers { N1, N2, …, NK }. A continuous subsequence is defined to be { Ni, Ni+1, …, Nj } where 1≤i≤j≤K. The Maximum Subsequence is the ...
2020-03-29 19:38:48 106
原创 最大子列和问题(C实现)
问题:给定K个整数组成的序列{ N1, N2, …, NK },“连续子列”被定义为{ Ni, Ni+1, …, Nj },其中 1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20。现要求你编写程序,计算给定整数序列的最大子列...
2020-03-28 17:23:51 224
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人