狸猫的笔试
文章平均质量分 55
w狸猫
愉快的玩耍
展开
-
狸猫的笔试——n位格雷码的生成
生成n位格雷码: public static String[] Gray(int n) { String[] graycode = new String[(int) Math.pow(2, n)]; if (n == 1) { graycode[0] = "0"; graycode[1] = "1"; } else { String[] last = Gray(n原创 2016-04-08 21:57:43 · 426 阅读 · 1 评论 -
狸猫的笔试——格雷码判断
输入两个数,判断是否符合格雷码例如 :10 和11 为true11 和 11 为false11 和 00 为false public static boolean Gray(int x, int y) { // 两个数是否相同 if (x == y) { return false; } // 求^结果 int temp = x ^ y;原创 2016-04-08 20:55:48 · 556 阅读 · 0 评论 -
狸猫的笔试——蛇形矩阵
蛇形矩阵:一个n*n的矩阵,矩阵的内容成蛇形。例如n=3;矩阵内容:1 2 38 9 47 6 5按行输出为: 1 2 3 8 9 4 7 6 5n = 4;矩阵内容:1 2 3 412 13 14 511 16 15 610 9 8 7按行输出:1 2 3 4 12 13 14 5 11 16 15 6 1原创 2016-04-08 20:41:46 · 354 阅读 · 0 评论 -
狸猫的笔试——镜像字符串(二叉树法)
输入一串字符串,获取其中最长的镜像字符串例如cabecbad对与子串:abecba 除去c 剩下 abeba即为最长的镜像字符串 长度为5算法思想:对于每一个字符,都可以选择加入子串或者舍弃 然后判断是否是镜像字符串package myWork;import java.util.ArrayList;import java.util.List;public原创 2016-04-08 21:38:24 · 989 阅读 · 0 评论 -
狸猫的笔试——查找
输入:一个递增排序的数组一个数字S要求:在数组中查找两个数,使他们的和正好是S,如果有多对数字的和是S,则输出两个数乘积最小的输出:两个数javaCode最好情况下,时间复杂度为O(n/2) public static void sum(int[] arr, int s) { // 数组长度不够 if (arr.length <= 1) {原创 2016-04-09 19:40:30 · 394 阅读 · 0 评论 -
狸猫的笔试——字符转int
public static int getInt(String s,int radix) throws Exception { if(s == null || "".equals(s)||radix > 10||radix < 1) { throw new Exception("input error"); } int len = s.length(); char原创 2016-04-13 23:45:01 · 301 阅读 · 0 评论 -
狸猫的面试——链表
1.找出链表的中间元素 解法:链表的特点是容易增删,难于随机访问。如果按照常规的想法:(1)遍历链表,获取长度 (2)从头走1/2步 。但是这种方式会需要O(1.5n)。可以采用如下方式:两个人赛跑,如果A的速度是B的两倍,则当A到达终点时,B则刚到中点。这样,只需要遍历一遍即可。 2.链表的排序 解法:排序的方法很多,但由于链表自身的特性,使得它在使用归并排序时,很原创 2016-04-18 20:27:16 · 332 阅读 · 0 评论 -
狸猫的笔试——集合
1.计算1+2+3+……+n。不使用乘法。分析:这道题有三种思路。1.用for循环从一加到n。虽然简单,但是时间最长。2.根据等差数列公式有 (1+n)*n/2 = sum,化简得 (n + n^2) >> 1 = sum.虽然最简单,时间也短,但是使用了次方。3.依然基于等差数列求和。例如。1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 +9 首尾相加有1原创 2016-08-26 15:49:18 · 910 阅读 · 0 评论