摘要:
昨天为了准备一个面试,进度没跟上,今天补上。 题目描述: 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). 解题思路: 一开始就只能想到暴力来做,不过复杂度就是O(n^2)。 思路二:用哈希表来存每 阅读全文
摘要:
题目描述: 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 解题思路: 同样考虑用递归来做。 利用两个递归函数,一个用于判断两棵树树否相等,另一个递归取A的子树与B比较。 包含几种情况: A为空或B为空,false; A与B相等,true; B为A的子结构 阅读全文
摘要:
题目描述: 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 解题思路: 这道题也是递归的思路,比较简单。 做的过程中遇到的一个问题是return count++这句,实际返回的是count之后再加了。还是直接用count+1返 阅读全文
摘要:
题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 解题思路: 实际就是二叉树的中序遍历问题。之前在leetcode刷过类似题目。 利用队列完成即可。 代码: 阅读全文
摘要:
题目描述: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 解题思路: 根据二叉搜索的性质,后序遍历是先搜索左子树,再右子数,最后是根结点。对应到序列中就是,序列的最后一位为根结点,从头开始遍历序列中一段连续 阅读全文
摘要:
题目描述: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的 阅读全文
摘要:
题目描述: 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 解题思路: 相当与在保留原栈的同时,去维护一个最小栈。利用一个辅助栈来完成。对于每个新输入的数,在压入原栈的同时,需要去判断是否为最小值,若为最小指,则压入辅助栈,否则将当前最小值压入 阅读全文
摘要:
题目描述: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 解题思路: 这道题应该是之前本科是上算法课做过的题目。两种思路。 思路一: 阅读全文