首页 > 几个笔试题目总结

几个笔试题目总结

1、阿里某个笔试题,两个字符串text,query,找到text中包含的最长的query的字串:

public static String subStr(String text, String query) {if (text != null && query != null) {int length = query.length();for (int i = 0; i < length; i++) {for (int j = 0; j <= i; j++) {String sub = query.substring(j, length - i + j);if (text.contains(sub)) {return sub;}}}}return null;}

 

2、阿里某笔试题:找到一个二叉树中最大最小值对应节点的差值的绝对值,也就是节点所在层的差值,并不是本身数值的差值:

package mystudy;import java.io.UnsupportedEncodingException;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;public class Tree {private TreeNode root;public Tree() {};public Tree(TreeNode root) {this.root = root;}public void initTree() {root = new TreeNode(8);root.setLeft(new TreeNode(5));root.getLeft().setLeft(new TreeNode(7));root.getLeft().setRight(new TreeNode(4));root.setRight(new TreeNode(9));root.getRight().setRight(new TreeNode(6));root.getRight().setLeft(new TreeNode(10));}public void preOrderTraverse() {preOrderTraverse(root);}public void preOrderTraverse(TreeNode node) {if (node != null) {System.out.println(node.getValue());preOrderTraverse(node.getLeft());preOrderTraverse(node.getRight());}}public void nPreOrderTraverse() {Stack stack = new Stack();TreeNode node = root;while (node != null || !stack.isEmpty()) {while (node != null) {System.out.println(node.getValue());stack.push(node);node = node.getLeft();}if (!stack.isEmpty()) {node = stack.pop();node = node.getRight();}}}public void inOrderTraverse() {inOrderTraverse(root);}public void inOrderTraverse(TreeNode node) {if (node != null) {inOrderTraverse(node.getLeft());System.out.println(node.getValue());inOrderTraverse(node.getRight());}}public void nInOrderTraverse() {Stack stack = new Stack();TreeNode node = root;while (node != null || !stack.isEmpty()) {while (node != null) {stack.push(node);node = node.getLeft();}if (!stack.isEmpty()) {node = stack.pop();System.out.println(node.getValue());node = node.getRight();}}}public void postOrderTraverse() {postOrderTraverse(root);}public void postOrderTraverse(TreeNode node) {if (node != null) {postOrderTraverse(node.getLeft());postOrderTraverse(node.getRight());System.out.println(node.getValue());}}public void nPostOrderTraverse() {Stack stack = new Stack();TreeNode node = root;TreeNode preNode = null;while (node != null || !stack.isEmpty()) {while (node != null) {stack.push(node);node = node.getLeft();}if (!stack.isEmpty()) {node = stack.peek();if (node.getRight() == null || node.getRight() == preNode) {node = stack.pop();System.out.println(node.getValue());preNode = node;node = null;} else {node = node.getRight();}}}}public void levelTraverse() {levelTraverse(root);}public void levelTraverse(TreeNode node) {if (node != null) {Queue queue = new LinkedList();queue.offer(node);while (!queue.isEmpty()) {TreeNode mNode = queue.poll();if (mNode != null) {System.out.println(mNode.getValue());if (mNode.getLeft() != null) {queue.offer(mNode.getLeft());}if (mNode.getRight() != null) {queue.offer(mNode.getRight());}}}}}public int treeDepth() {return treeDepth(root);}public int treeDepth(TreeNode node) {if (node == null) {return 0;}int leftDepth = treeDepth(node.getLeft());int rightDepth = treeDepth(node.getRight());return leftDepth > rightDepth ? leftDepth + 1 : rightDepth + 1;}public int minMaxSpan() {Queue queue = new LinkedList();if (root != null) {int visitedNum = 0, addedNum = 1, levelNum = 1, min, max, depth = 0, minLevel = 0, maxLevel = 0;min = max = root.getValue();queue.offer(root);while (!queue.isEmpty()) {TreeNode mNode = queue.poll();if (min > mNode.getValue()) {min = mNode.getValue();minLevel = depth;} else if (max < mNode.getValue()) {max = mNode.getValue();maxLevel = depth;}visitedNum++;if (mNode.getLeft() != null) {queue.offer(mNode.getLeft());addedNum++;}if (mNode.getRight() != null) {queue.offer(mNode.getRight());addedNum++;}if (visitedNum == levelNum) {depth++;levelNum = addedNum;}}System.out.println("min:" + min + "max:" + max + "minLevel:"+ minLevel + "maxLevel:" + maxLevel + "树的高度:" + depth);return Math.abs(minLevel - maxLevel);}return -1;}public class TreeNode {private TreeNode left;private TreeNode right;private int value;public TreeNode(TreeNode left, TreeNode right, int value) {this.left = left;this.right = right;this.value = value;}public TreeNode(int value) {this(null, null, value);}public TreeNode getLeft() {return left;}public void setLeft(TreeNode left) {this.left = left;}public TreeNode getRight() {return right;}public void setRight(TreeNode right) {this.right = right;}public int getValue() {return value;}public void setValue(int value) {this.value = value;}}/*** @param args* @throws UnsupportedEncodingException*/public static void main(String[] args) throws UnsupportedEncodingException {// TODO Auto-generated method stubTree tree = new Tree();tree.initTree();System.out.println("树中最大值最小值层数之差:" + tree.minMaxSpan());System.out.println("前序递归:");tree.preOrderTraverse();System.out.println("前序非递归:");tree.nPreOrderTraverse();System.out.println("中序递归:");tree.inOrderTraverse();System.out.println("中序非递归:");tree.nInOrderTraverse();System.out.println("后序递归:");tree.postOrderTraverse();System.out.println("后序非递归:");tree.nPostOrderTraverse();System.out.println("按层次遍历:");tree.levelTraverse();System.out.println("树的高度:" + tree.treeDepth());}}

以后不断补充。。。

转载于:https://www.cnblogs.com/nannanITeye/p/3946707.html

更多相关:

  • 题目:从上到下打印二叉树 II 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。 例如: 给定二叉树: [3,9,20,null,null,15,7],     3    /   9  20     /      15   7 返回其层次遍历结果: [   [3],   [9,20],   [...

  • 题目:对称的二叉树 请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。     1    /   2   2  / / 3  4 4  3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:...

  • 题目:二叉树的镜像 请完成一个函数,输入一个二叉树,该函数输出它的镜像。 例如输入:      4    /      2     7  /   / 1   3 6   9 镜像输出:      4    /      7     2  /   / 9   6 3   1 示例 1: 输入:root =...

  • 题目:树的子结构 输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构) B是A的子结构, 即 A中有出现和B相同的结构和节点值。 例如: 给定的树 A:      3     /    4   5   /  1   2 给定的树 B:    4    /  1 返回 true,因为 B...

  • 下面是树类型题目需要用到的头文件tree.h,请包含在cpp文件中编译,而不是放在c文件中编译,比如查找树中两个节点的最低公共父结点的题common_parent_in_tree.cpp,编译它的方法是: g++ -g common_parent_in_tree.cpp -o common_parent_in_tree 下...

  • 二叉搜索树的编码和解码描述: 编码:即将一个二叉搜索树编码,节点数值转换为字符串 解码:即将一个字符串解码,数值转换为对应的二叉搜索树的节点 过程导图如下: 针对性编码实现如下: /*数字转字符串*/ void change_num_to_string(int val, string &tmp) {string buf;whil...

  • 二叉搜索树又名二叉排序树。 大概简略的思维导图如下,方便记忆特性 基本二叉搜索树创建过程如下 /*数据结构如下*/ typedef struct tree {int data;struct tree *left = NULL;struct tree *right = NULL; }Tree,*TreeNode;/*Node 为二...

  • Linux安装Nodejs       阿里云镜像: https://npm.taobao.org/mirrors/node/ 选择所需版本,进行下载。    我这边下载的是:https://npm.taobao.org/mirrors/node/v8.2.1/node-v8.2.1-linux-x64.tar.gz         ...

  • 1. HDFS Architecture 一种Master-Slave结构。包括Name Node, Secondary Name Node,Data Node Job Tracker, Task Tracker。JobTrackers: 控制全部的Task Trackers 。这两个Tracker将会在MapReduce课程里...

  • 下载Nodejs插件,下载zip压缩包后解压链接: http://pan.baidu.com/s/1hsBk60k 密码: jrcv打开Sublime Text3,点击菜单“首选项(N)” =>“浏览插件(B)”打开“Packages”文件夹,并将第1部的Nodejs文件夹剪切进来打开文件“Nodejs.sublime-build”,...

  • 在.Net Framework中,配置文件一般采用的是XML格式的,.NET Framework提供了专门的ConfigurationManager来读取配置文件的内容,.net core中推荐使用json格式的配置文件,那么在.net core中该如何读取json文件呢?1、在Startup类中读取json配置文件1、使用Confi...

  •   1 public class FrameSubject extends JFrame {   2    3   …………..   4    5   //因为无法使用多重继承,这儿就只能使用对象组合的方式来引入一个   6    7   //java.util.Observerable对象了。   8    9   DateSub...

  • 本案例主要说明如何使用NSwag 工具使用桌面工具快速生成c# 客户端代码、快速的访问Web Api。 NSwagStudio 下载地址 比较强大、可以生成TypeScript、WebApi Controller、CSharp Client  1、运行WebApi项目  URL http://yourserver/swagger 然后...

  •   在绑定完Action的所有参数后,WebAPI并不会马上执行该方法,而要对参数进行验证,以保证输入的合法性.   ModelState 在ApiController中一个ModelState属性用来获取参数验证结果.   public abstract class ApiController : IHttpController,...

  • 1# 引用  C:AVEVAMarineOH12.1.SP4Aveva.ApplicationFramework.dll C:AVEVAMarineOH12.1.SP4Aveva.ApplicationFramework.Presentation.dll 2# 引用命名空间, using Aveva.Applicati...