首页 > 代码库 > 笔试题目汇总

笔试题目汇总

雅虎2015校招笔试

一、已知数组A[],实现数组B[];使得B[i]=A[0]*A[1]...*A[i-1]*A[i+1]...*A[n-1]
要求:
1)不能使用除法
2)时间复杂度为O(n)
3)空间复杂度为O(1)

package com.bobo.interview;public class Yahoo1 {    /**     * @param args     */    public static void main(String[] args) {        // TODO Auto-generated method stub    }    // 1,已知数组A[],实现数组B[];使得B[i]=A[0]*A[1]...*A[i-1]*A[i+1]...*A[n-1]    // 要求:    // 1)不能使用除法    // 2)时间复杂度为O(n)    // 3)空间复杂度为O(1)    public int[] calResult(int[] a) {        int length=a.length;        int[] b=new int[length];        b[0]=1;        //经过这轮循环之后,b[i]中各个元素的值,等于对应位置之前的元素的乘积        //每一个都是先通过b[0](因为b[0]相当于无用,因此可以作为中转)算出来,然后再赋值给对应的b[i]        for(int i=1;i<length;i++){            b[0]*=a[i-1];            b[i]=b[0];        }        b[0]=1;        //之后从后往前扫描        //经过这次之后,最终的结果就是除了其本身之外,所有元素的乘积        for(int i=length-2;i>0;i--){            //该元素之后所有元素的乘积            b[0]*=a[i+1];            //之前的元素乘以之后的元素即可            b[i]*=b[0];        }        return b;    }}
问题解答

二、4k+2个数字,k个数出现4次,两个数出现两次,编写代码,找到这两个出现两次的数字

 

笔试题目汇总