剑指offer
每日学习
weixin_43969141
这个作者很懒,什么都没留下…
展开
-
五、求二叉树中第K小元素
题目描述:给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。解题思路:先遍历二叉树后进行比较,遍历二叉树需要使用中序法知识:各种树的概念、查找二叉树的方法、若要求第K大元素代码:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : ..原创 2020-08-03 14:47:59 · 314 阅读 · 0 评论 -
四(中等)求数组中任意一个重复的数字
题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。疑惑(基础知识):利用哈希表搜索以及数组遍历的区别,时间空间复杂度基础解题思路 (1)先对数组{1,2,5,3,2,7}进行排序,让数组中各个元素排在对应的下标位置上。即number[i]=i; (...原创 2020-07-31 13:08:15 · 244 阅读 · 0 评论 -
三(巨简单题)构建乘积数组
题目描述给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。(注意:规定B[0] = A[1] * A[2] * ... * A[n-1],B[n-1] = A[0] * A[1] * ... * A[n-2];)对于A长度为1的情况,B无意义,故而无法构建,因此该情况不会存在。题目分析只需要观察得到B[i]为去掉A[i]之外的数组中所有元..原创 2020-07-31 10:48:06 · 99 阅读 · 0 评论 -
三(简单题)、求一颗二叉树的深度
问题:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。问题分析:递归遍历题目提供的节点:struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {}/* TreeNode* left=NULL; ..原创 2020-07-30 12:55:20 · 338 阅读 · 0 评论 -
二、台阶问题
问题:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法?考点:斐波那切数列解题思路:此问题为斐波那切数列变种根据台阶数不同,可以发现每一级台阶跳法F(n)(当台阶数大于等于2时)台阶跳法为前一级台阶数乘以2 即2*F(n-1)。代码:知识点:斐波那切数列 贪心算法 1、斐波那切数列 斐波那契数列指的是这样一个数列:0 、1、1、2、3、5、8、13、21,后面的每一个数是前面两...原创 2020-07-29 14:14:19 · 398 阅读 · 0 评论 -
一、不用加减乘除做加法
考点:位运算以及二进制知识点:左移( << )、右移( >> ) 、无符号右移( >>> ) 、位与( & ) 、位或( | )、位非( ~ )、位异或( ^ ),除了位非( ~ )是一元操作符外,其它的都是二元操作符。<< : 左移运算符,num << 1,相当于num乘以2>> : 右移运算符,num >> 1,相当于num除以2与(&)运算与运算进行的是这样的算法:0&原创 2020-07-28 20:37:07 · 99 阅读 · 0 评论