
剑指offer面试题
zwxu_
梦想还是要有了,万一。。。。。
展开
-
面试题12:打印1到最大的n位数
public class Demo12 { public boolean Increment(int[] number){ // 这个方法是用来实现对数加1操作 boolean isOverflow = false; int nTakeOver=0; for(int i=number.length-1;i>=0;i原创 2016-01-13 20:09:17 · 259 阅读 · 0 评论 -
面试题11:数值的整数次方
public class Demo11 { public double power1(double base,int ex) throws Exception { if(equal(base,0.0) && ex < 0) { throw new Exception("error input"); //return 0.0; } int absex=ex; if原创 2016-01-12 15:19:30 · 277 阅读 · 0 评论 -
如何编写高质量的代码
一、代码的规范性 清晰的书写、清晰的布局、合理的命名 二、代码的完整性 1.通过功能测试、边界测试、负面测试保证代码完整性 2.采用合理的错误处理方法:a通过函数返回值告诉调用者是否出错 b通过全局变量设置相应标志提醒调用者出错 c通过抛出异常方式检测程序中的错误 例题:实现函数double Power(double base,int exponent),求base的exponent翻译 2015-06-28 19:30:25 · 360 阅读 · 0 评论 -
面试题8:旋转数组的最小数字
算法思想:参考二分查找 public class Demo8 { public int min(int[] array) throws Exception{ if(array == null) { throw new Exception("invalid"); } int index1=0; int index2=array.length-1; int mid=i原创 2016-01-11 14:08:53 · 264 阅读 · 0 评论 -
面试题7:用两个栈实现队列+用两个队列实现栈
算法思想(用两个栈实现队列): 代码如下: import java.util.Stack; public class Demo7_1 { private Stack stack1 = new Stack(); private Stack stack2 = new Stack(); public void appendTail(String s){ stack1.pu原创 2016-01-11 10:59:08 · 252 阅读 · 0 评论 -
面试题3:二维数组中的查找
算法思想: 代码如下: public class Demo3 { static String newS; static int ages[]=new int[]{1,2,8,9,2,4,9,12,4,7,10,13,6,8,11,15}; static boolean findItem(int ages[],int rows,int columns,int number) {原创 2016-01-11 10:18:46 · 253 阅读 · 0 评论 -
面试题6:重建二叉树
public class Demo6 { /** * * @param preOrder 前序遍历数组 * @param inOrder 中序遍历数组 * @param length 数组长度 * @return 根结点 */ public static BinaryTreeNode Construct(int[] preOr原创 2016-01-11 19:57:02 · 252 阅读 · 0 评论 -
面试题5:从尾到头打印链表
public class Demo5 { static void printlist_recursive(LinkNode head){ if(head != null) { if(head.next != null) { printlist_recursive(head.next); } System.out.print(head.value);原创 2016-01-11 19:52:31 · 289 阅读 · 0 评论 -
面试题4:替换空格
public class Demo4 { static char[] replaceBank(char[] str,int length){ if(str == null && length<=0){ return null; } int numOfBlank=0; int orginalLength=str.length-1;//12 for(int i=0;i<o原创 2016-01-11 19:49:56 · 221 阅读 · 0 评论 -
面试题10:二进制中的1的个数
public class Demo10 { /* * 首先把n和1做与运算,判断n的最低位是不是1.接着把1左移一位得到2,再和n做与运算,就能判断n的次低位是不是1。 * 这样反复左移,每次都能判断n的其中一位是不是1 */ public int badNumof1(int n){//此时循环次数为n的二进制数位数 int count=0; int flag=1; w原创 2016-01-11 18:56:32 · 292 阅读 · 0 评论 -
面试题9:斐波那契数列
背景介绍: 如果面试没有其他要求,一般建议用递归方法,因为其代码相对简洁,但如果要求算法必须考虑效率,则改用循环方法,因为递归一方面由于函数调用自身耗费时间和空间性能,另一方面导致重复计算,甚至运算中可能超出栈容量,导致栈溢出。 public class Demo9 { public int fibRecursive(int n){ if(n<=0) { return 0;原创 2016-01-11 16:34:52 · 294 阅读 · 0 评论 -
如何应对面试的排序算法题?
序言:在面试的时候,如果面试官要求实现一个排序算法,那么应聘者一定要问清楚这个排序应用的环境是什么、有哪些约束条件,在得到足够多的信息之后再选择最合适的排序算法,切勿盲目套用常见的排序算法,如快速排序。 题目:对公司所有员工的年龄排序。时间效率O(n) 注:向面试官询问年龄的范围,询问是否可以使用辅助空间,询问员工人数。 算法思想:利用辅助空间timesOfAge用来统计每个年龄出现的次数。原创 2015-06-27 21:03:57 · 607 阅读 · 0 评论 -
过滤字符串中非首次出现的字母
private StringBuffer filter(String input) { int n=input.length(); StringBuffer s = new StringBuffer(); int ch[] = new int[26]; int pos; for(int i=0;i<n;i++) { pos=input.charAt(i)-'a';原创 2016-09-22 18:31:22 · 1004 阅读 · 0 评论