标签: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)
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