这是一道面试亚马逊时的题目,要求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;
}
}

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

Interview Return Products of All Other Elements in Array的更多相关文章

  1. Javacript Remove Elements from Array

    參考自: https://love2dev.com/blog/javascript-remove-from-array/ 1. Removing Elements from End of Array ...

  2. max (Largest elements in array)

    句法: M = max(A) M = max(A,[],dim) [M,I] = max(___) C = max(A,B) ___ = max(___,nanflag)   描述: M=max(A) ...

  3. 最近学习的 Node.js 基础:安装、环境配置、forever

    最近工作中,因为某某某某原因,需要用到Node.js  . 发现在很多方面和python很像,比如generator / yield ,比如模块的使用方式,比如http模块. 先安装个环境,windo ...

  4. openLayer3地图的使用心得

    准备运行环境: 1)Portable Basemap Server(PBS)用于创建地图服务 官网网址:http://geopbs.codeplex.com/ 如何创建底图服务?操作步骤如下: 如果启 ...

  5. [LeetCode] Top K Frequent Elements 前K个高频元素

    Given a non-empty array of integers, return the k most frequent elements. For example,Given [1,1,1,2 ...

  6. LeetCode Minimum Moves to Equal Array Elements II

    原题链接在这里:https://leetcode.com/problems/minimum-moves-to-equal-array-elements-ii/ 题目: Given a non-empt ...

  7. LeetCode 【347. Top K Frequent Elements】

    Given a non-empty array of integers, return the k most frequent elements. For example,Given [1,1,1,2 ...

  8. (Collection)347. Top K Frequent Elements

    Given a non-empty array of integers, return the k most frequent elements. For example,Given [1,1,1,2 ...

  9. Leetcode 347. Top K Frequent Elements

    Given a non-empty array of integers, return the k most frequent elements. For example,Given [1,1,1,2 ...

随机推荐

  1. spark-submit [options]

    执行时需要传入的参数说明如下: Usage: spark-submit [options] <app jar | python file> [app options] 参数名称 含义 -- ...

  2. IOS第四天(4:下一题和选框的实现)

    #import "HMViewController.h" #import "HMQuestion.h" #define kButtonWidth 35 #def ...

  3. 【iCore、iCore2、iBoard例程】【异步FIFO跨时钟域通信(通过ARM 读FPGA FIFO)】

    欢迎访问电子工程师学堂,以便了解更多内容:http://www.eeschool.org 一.本实验基于iCore2 完成,通过简单改动,即可用在 iCore 核心板.iBoard 电子学堂上. iC ...

  4. 分布式架构高可用架构篇_06_MySQL源码编译安装(CentOS-6.7+MySQL-5.6)

    redhat: 下载:http://dev.mysql.com/downloads/mysql/ 选择5.6 source包 解压 cmake . -DCMAKE_INSTALL_PREFIX=/us ...

  5. php 使用GD库上传图片以及创建缩略图

    php 使用GD库上传图片以及创建缩略图   GD库是PHP进行图象操作一个很强大的库. 先在php.ini里增加一行引用:extension=php_gd2.dll 重启apache.做一个测试页 ...

  6. 【转载】C内存分配

    一.预备知识—程序的内存分配  一个由C/C++编译的程序占用的内存分为以下几个部分 1.栈区(stack)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈. ...

  7. 5 个 Composer 小技巧

    Composer是新一代的PHP依赖管理工具.其介绍和基本用法可以看这篇<Composer PHP依赖管理的新时代>.本文介绍使用Composer的五个小技巧,希望能给你的PHP开发带来方 ...

  8. .gitignore 配置

    .gitignore 配置文件用于配置不需要加入版本管理的文件,配置好该文件可以为我们的版本管理带来很大的便利,以下是个人对于配置 .gitignore 的一些心得. 1.配置语法: 以斜杠“/”开头 ...

  9. Fingerprinting

    https://wiki.mozilla.org/Fingerprinting Fingerprinting   Contents 1 Overview 2 Data 2.1 Plugins 2.2 ...

  10. jsonObject jsonarray

    1.JAR包简介 要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包: commons-lang.jar commons-beanutils.jar commons ...