剑指offer
qq_30319851
这个作者很懒,什么都没留下…
展开
-
剑指offer-用两个栈实现队列
1.基础知识 (1)队列的特点是先进先出; (2)栈的特点是先进后出; (3)存数据很容易,直接将数据存入stack1中; (4)关键在于取数据,实现的难点怎么由先进后出变为先进先出,所以很容易就想到可以利用stack2,取数据时将数据从stack1先后取出存入stack2中,然后再从stack2中取出来的就是先进先出的顺序了。 2.图示理解 (1)stack1用于push数据,sta...原创 2019-02-16 12:49:14 · 113 阅读 · 0 评论 -
二分法查找数组循环出口
1.二分法查找数组循环出口 (1)找到想要的值,即array[mid]=right value; (2)low<high这个条件要满足时; 2.注意点 (1)mid的公式写法,写法不同可能也会导致low,high与mid关系的写法。 (2)mid=(low+high)/2时,low=mid+1,high=mid;具体原因解释如下图。 (3)为什么不写成low=mid;high=m...原创 2019-02-16 16:24:20 · 262 阅读 · 0 评论 -
剑指offer-旋转数组的最小数字
题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 解题思路: 【1】第一个要求:需要判断数组大小,若数组大小为0,则return 0; 【2】观察特点:前...原创 2019-02-16 17:19:38 · 115 阅读 · 0 评论 -
剑指offer-顺时针打印矩阵
题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 解题思路 先得到矩阵的行和列数,然后依次旋转打印数据,一次旋转打印结束后,往对角分别前进和后退一个单位。 要注意单行和单列...转载 2019-02-17 14:44:38 · 101 阅读 · 0 评论 -
剑指offer-二叉树的镜像
操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义: 源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 解题思路 通过对以...转载 2019-02-17 14:58:16 · 95 阅读 · 0 评论 -
剑指offer---二叉树中和为某一值的路径
题目描述: 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 思路解析: 用前序遍历的方式访问到某一结点时,把该结点添加到路径上,并用目标值减去该结点的值(也可累加,累加值是否等于目标值)。如果该结点为叶节点,并且目标值减去该结点的值刚好为0,则当前路径符合要求,我们把它加入保存符合要求路径的数组当中...转载 2019-02-22 22:00:40 · 107 阅读 · 0 评论