zoukankan      html  css  js  c++  java
  • Interview Return Products of All Other Elements in Array

    这是一道面试亚马逊时的题目,要求Time O(n). 我刚开始想的是算出所有的数的总product,再去除以对应位置的元素,但这种做法的问题是若该位置为0,就会报错。

    到网上搜了下,才知道,原来有这种做法。

    e.g. arr = {0,1,2,3},生成两个array: upArr = {1,arr[0], arr[0]*arr[1],arr[0]*arr[1]*arr[2]}

    downArr = {arr[0]*arr[1]*arr[2],arr[1]*arr[2], arr[2],1}

    最后的结果res就是upArr 和 downArr 对应的位置相乘即可。Time O(n).

    Note: 1.System.out.println arr 时可用 Arrays.toString(arr).


    AC Java:

    import java.util.*;
    public class productOthers{
    	public static void main(String [] args){
    		int[] myArr = {0,1,2,3,4};
    		int[] myArr2 = {2,4,3,5};
    		int[] myArr3 = null;
    		System.out.println(Arrays.toString(productOthers(myArr)));
    		System.out.println(Arrays.toString(productOthers(myArr2)));
    		System.out.println(Arrays.toString(productOthers(myArr3)));
    
    	}
    	private static int [] productOthers(int [] arr){
    		if(arr == null || arr.length == 0)
    			return null;
    		int[] upArr = new int[arr.length];
    		int[] downArr = new int[arr.length];
    
    		int[] res = new int[arr.length];
    
    		upArr[0] = 1;
    		int mul1 = arr[0];
    		for(int i = 1; i < upArr.length; i++){
    			upArr[i] = mul1;
    			mul1*=arr[i];
    		}
    		// System.out.println(Arrays.toString(upArr));
    
    		downArr[downArr.length-1] = 1;
    		mul1 = arr[arr.length-1];
    		for(int i = downArr.length-2;i>=0;i--){
    			downArr[i] = mul1;
    			mul1*=arr[i];
    		} 
    		// System.out.println(Arrays.toString(downArr));
    
    		for(int i = 0; i<arr.length; i++){
    			res[i] = upArr[i]*downArr[i];
    		}
    		return res;
    	} 
    }


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    NX 调试批处理文件
    NXOpen 更改UI对话框宽度
    NXOpen 遍历体 移动图层
    NXOpen 设置工作图层 一键开关图层
    NXOpen Block UI弹出另一个对话框实例
    NXOpen 座标UI获取 (原点 矩阵变换)
    [StackExchange]Redis 的几种类型的操作(string,hash,lists,set,sorted set)
    IIS 并发连接 设置与测试
    [StackExchage]Redis 的连接与操作(跨机器)
    Redis 事务
  • 原文地址:https://www.cnblogs.com/Dylan-Java-NYC/p/4825032.html
Copyright © 2011-2022 走看看