自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 剑指Offer:用两个栈实现队列(一刷)

题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 我的想法: push操作时,push进stack1 pop操作时,先把stack1的逐个push进stack2,pop掉stack2的栈顶元素后,原样push回stack1。 class Solution { public: void push(int

2017-07-25 22:25:25 261

原创 剑指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]。不能使用除法。 我的想法: 在纸上画了一个二维矩阵。 为减少循环和运算的次数,使每次计算结果尽量能够得到使用。 声明了两个数组,循环,分别保存上三角和下三角(均不包含对

2017-07-25 17:15:48 290

原创 剑指Offer:变态跳台阶(一刷)

题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 我的想法: 递归。该步的所有选择的结果相加,其结果用递归调用该函数获得。 class Solution { public: int jumpFloorII(int number) { if (number == 0

2017-07-24 22:44:23 255

原创 剑指Offer:不用加减乘除做加法(一刷)

题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 我的想法: 利用位运算。 1. 按位相与,得到的结果左移,模拟进位。若得到的结果为零,直接返回异或结果。 2. 按位异或,得到不进位时每位上的结果。 3. 递归,参数为1的结果和2的结果。 出现的问题: 如果if语句写成 if ( num1 & num2 == 0)

2017-07-24 22:08:50 255

原创 剑指Offer:二叉树的深度(一刷)

题目描述 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 我的想法: 采用递归的思想,若该节点为叶子节点,则返回深度为0,若有左孩子或右孩子,则返回孩子中更深的深度并加1。 /* struct TreeNode { int val; struct TreeNode *left;

2017-07-24 21:51:21 322

原创 剑指Offer:二叉树的镜像(一刷)

题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5

2017-07-24 16:41:40 272

原创 剑指Offer:从尾到头打印链表(一刷)

题目描述:输入一个链表,从尾到头打印链表每个节点的值。 本题在开头用注释形式给出了链表类的成员变量名。 我的想法: 无论哪一种,最开始都是循环遍历得到链表的长度n。 第一种循环n次输出n个节点值;输出方法是嵌套一个循环,每次从head开始,时间复杂度为O(n^2)。 第二种是将链表改造为一个循环链表,然后用两层循环,第二层循环的第一次循环从head开始,循环n次,输出节点值,第二

2017-07-24 10:30:55 267

原创 二叉树:利用广义表创建二叉树,并实现指定结点的删除

题目: 编写递归算法,对于二叉树中每一个元素值data等于x的节点,删去以它为根的子树,并释放相应的空间。 树的结构以广义表的形式给出。如A(B,)表示一颗有2个节点的树。其中根的data值为A,其左孩子为叶子节点,data值为B,右孩子为空。 输入格式 输入有两行,第一行为以广义表的形式给出的树形结构,长度在区间 [0,30)[0,30) 内,均由大写字母和左右括号组成,每个结点

2017-07-12 17:31:27 1510

转载 二叉树:已知先序和中序求后序

采用了递归的思想来解决问题。 先序遍历的第一个结点为该二叉树的根节点。 找到中序遍历中该根节点所在位置,则根节点左侧为该二叉树的左子树的中序遍历(右侧为二叉树的右子树的中序遍历),我们同时也得到了左子树的结点个数。 那么先序遍历去掉第一个结点,数出左子树结点个数个结点,便得到该二叉树左子树的先序遍历(剩下的为二叉树的右子树的先序遍历)。 程序的实现过程中,在Node中定义了一个建立

2017-07-10 18:03:51 802

原创 数据结构:(更新中)成员变量、成员函数和实例一般命名和定义方法

包括:顺序表,链表,队列,栈,二叉树等数据结构cpp实现的类、变量、函数定义风格及方法。

2017-07-10 17:17:18 520

原创 栈:逆波兰式

题目: 假设表达式由数字和双目四则运算符+,-,*,/构成。试利用栈实现一个算法,将一个通常书写形式且书写正确的表达式转换为逆波兰式(后缀表达式),同时将转换后的逆波兰式求值,最后仅需输出求值结果。 输入格式 输入共有一行,为待求值的表达式,以换行结束。表达式保证是合法的,表达式中的整数在 [0,10][0,10] 以内,表达式长度不超过 2020。表达式中仅包含+,-,*,/以及数

2017-07-10 12:08:59 2033

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除