码迷,mamicode.com
首页 > 其他好文 > 详细

笔试题目汇总

时间:2014-09-22 19:21:53      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   使用   ar   strong   for   

雅虎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)

bubuko.com,布布扣
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次,两个数出现两次,编写代码,找到这两个出现两次的数字

 

笔试题目汇总

标签:style   blog   http   color   os   使用   ar   strong   for   

原文地址:http://www.cnblogs.com/bobodeboke/p/3986470.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!