剑指offer
三少爷的剑!
从学生手上收来的资源整理并确认是否有用,如有雷同,纯属巧合。
展开
-
变态跳台阶(真变态啊)(每日一练)(剑指offer)
一个台阶总共有n级,如果一次可以跳1级,也可以跳2级......它也可以跳上n级。此时该青蛙跳上一个n级的台阶总共有多少种跳法?这道题我做的时候也是一脸懵,后来想了想,发现,当只有一个台阶时,它只能有一种跳法,当有两个台阶时,它可以直接跳到第二个台阶,也可以有一个台阶一个台阶的跳,两种跳法当有三个台阶时,它有四种跳法。这里需要注意的是,它可以第一次跳一个台阶,那么剩下的台阶是不是就是2个台阶的跳法,它若一次跳两个台阶,那么剩下的台阶就是一个台阶的跳法。根据这个思想,可以得出的公式是f原创 2020-07-14 23:21:51 · 4040 阅读 · 0 评论 -
二叉树的镜像(剑指offer)
题目描述操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5这道题考验的是做题者对二叉树的遍历的掌握情况,属于非常简单的类型。只要对二叉树的遍历熟悉就能解出。/*原创 2020-07-04 13:07:02 · 3992 阅读 · 0 评论 -
求树的深度(剑指offer)
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。运用递归方法,很简单的解决这道问题/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: i原创 2020-07-04 11:25:39 · 4057 阅读 · 0 评论 -
二叉树的下一个节点(详解,折磨我两个小时的题,必须得给它办得明明白白的)(数据结构基础回顾)(剑指offer)
题目如下所示:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。它的数据结构如下所示:/*struct TreeLinkNode { int val; struct TreeLinkNode *left; struct TreeLinkNode *right; struct TreeLinkNode *next; TreeLinkNode(int x) :val(x), ...原创 2020-07-04 01:36:48 · 4188 阅读 · 0 评论 -
构建乘积数组(剑指offer)
给定一个数组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];)很简单的一道题class Solution {public: vector<int> multiply(const vect原创 2020-07-03 22:27:44 · 4015 阅读 · 0 评论 -
用两个栈实现一个队列(c++)(剑指offer)(简单易懂)
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。给出两个栈,stack1和stack2,完成一个队列,由于队列是先进先出,而栈是新进后出,后进新出,所以根据这个性质。把栈stack1当做队列的头部分,把stack2当做队列的尾部分,stack1实现队列的插入元素功能,stack2实现队列的尾删功能。对于stack1的插入元素功能,实现的代码 void push(int node) { stack1.push(node);原创 2020-06-25 23:39:03 · 4110 阅读 · 0 评论 -
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。(c++)(剑指offer)
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。这里很明显让你用递归函数进行编写,代码如下:class Solution {public: int Sum_Solution(int n) { if(n==1) { return 1; } else { return n+原创 2020-06-25 00:53:06 · 4167 阅读 · 2 评论 -
数组中重复的数字(剑指offer)(c++)
链接:https://www.nowcoder.com/questionTerminal/623a5ac0ea5b4e5f95552655361ae0a8来源:牛客网在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。class Solution {public: // Par原创 2020-06-25 00:45:19 · 4044 阅读 · 0 评论