首页 > 代码库 > 笔试题目汇总
笔试题目汇总
雅虎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次,两个数出现两次,编写代码,找到这两个出现两次的数字
笔试题目汇总
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。