知识总结
文章平均质量分 77
jsdrtpf
小白一枚
展开
-
数据结构与算法笔记之二叉树
目录: 一、基本概念二、二叉树的实现三、遍历原创 2018-11-01 22:35:36 · 232 阅读 · 0 评论 -
《剑指offer》刷题打卡第8天
面试题24:二叉树中和为某一值的路径题目:输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。二叉树节点的定义如下:struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : va...原创 2019-04-09 17:26:48 · 284 阅读 · 0 评论 -
《剑指offer》刷题打卡第9天
面试题26:二叉搜索树与双向链表题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。比如,输入下图左边的二叉搜索树,则输出转换之后的排序双向链表。二叉树节点的定义如下:struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNo...原创 2019-04-12 17:07:33 · 246 阅读 · 0 评论 -
《剑指offer》刷题打卡第7天
面试题21:栈的压入、弹出序列题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列{1,2,3,4,5}是某栈的压栈序列,序列{4,5,3,2,1}是该压栈的对应的一个弹出序列,但{4,3,5,1,2}就不可能是该压栈序列的弹出序列。思路:判断一个序列是不是栈的弹出序列的规律:如果下一个弹出的数字刚好是栈顶数字,直...原创 2019-04-08 17:17:46 · 389 阅读 · 0 评论 -
《剑指offer》刷题打卡第6天
面试题16:合并两个排序的链表输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。链表节点定义如下:struct ListNode{int m_nValue;ListNode *m_pNext;};合并两个排序链表的过程:分析合并两个链表的过程,合并两个链表的头节点开始。链表1的头节点的值小于链表2的头节点的值,因此链表1的头节点将是合并后链表的头节...原创 2019-04-02 17:28:12 · 218 阅读 · 0 评论 -
《剑指offer》刷题打卡第5天
面试题10:矩形覆盖我们可以用2 * 1的小矩形横着或者竖着去覆盖更大的矩形。请问n个2 * 1的小矩形无重叠地覆盖一个2 * n的大矩形,总共有多少种方法?题意解释:解题思路;代码实现:class Solution {public: int rectCover(int number) { if(number < 0) { ...原创 2019-04-01 17:30:53 · 297 阅读 · 0 评论 -
《剑指offer》刷题打卡第2天
面试题3:输入一个链表的头节点,从尾到头反过来打印出每一个节点的值。链表节点定义如下://单向链表的节点定义如下:struct ListNode{ int m_nValue;//链表长度 ListNode* m_pNext;//链表节点}基础知识:什么是链表?它由指针把若干个节点连接成链状结构。链表创建、插入节点、删除节点等基本操作代码量少,适合面试。链表是一种动态的数...原创 2019-03-29 16:15:28 · 207 阅读 · 0 评论 -
《剑指offer》刷题打卡第4天
算法和数据操作:算法考查:排序和查找是算法考查的重点。二分查找、归并排序和快速排序。如果我们需要重复的多次计算相同的问题,则通常可以选择用递归或者循环两种不同的方法。递归是在一个函数的内部调用这个函数自身。而循环则是通过设置计算的初始值及终止条件,在一个范围内重复运算。比如求1+2+…+n用递归实现:int AddFrom1ToN_Recursive(int n){Return n...原创 2019-03-31 16:56:29 · 1411 阅读 · 0 评论 -
《剑指offer》刷题打卡第1天
面试题1:二维数组中的查找题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。算法思想:第一步:选取数组右上角的数字9,将7与9作比较,9>7,又因为9是第四列中最小的一个数,故可做出判断,7绝对不会出现在第四列,所以排除第四列。第二步:选取第三列中右上角的数字8,...原创 2019-03-26 10:28:00 · 304 阅读 · 1 评论 -
《剑指offer》刷题打卡第3天
面试题5:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。基础知识储备:操作系统会给每个线程创建一个栈用来存储函数调用时各个函数的参数、返回地址及临时变量等。栈:栈的特点是后进先出,即最后被压入(push)栈的元素会被第一个弹出(pop)。队列:队列是另外一种很重要的数据结构。和栈不同的是,队列的特点是先进先出,即第一个进入队列的元素将会第一个出来...原创 2019-03-29 16:26:25 · 233 阅读 · 0 评论 -
学习笔记之使用前序遍历和中序遍历构造二叉树
总结一下学习笔记:一、提出问题给出一棵树的前序遍历和中序遍历,构造二叉树,你可以假设这棵树中不存在重复的数。例如:给出前序和中序遍历序列:preorder = [3,9,20,15,7],inorder=[9,3,15,20,7]得到如下所示的二叉树:二、解决方法如何去遍历这棵树?通常有两种方式去遍历,即Breadth First Search(BFS):广度优先搜索、Depth ...原创 2018-11-09 12:46:26 · 233 阅读 · 0 评论 -
《剑指offer》刷题打卡第10天
面试题28:数组中出现次数超过一半的数字题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。基于Partition函数的时间复杂度为O(n)代码实现:class Solution {public: int MoreTh...原创 2019-04-16 17:44:03 · 266 阅读 · 0 评论