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;
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
Interview Return Products of All Other Elements in Array的更多相关文章
- Javacript Remove Elements from Array
參考自: https://love2dev.com/blog/javascript-remove-from-array/ 1. Removing Elements from End of Array ...
- max (Largest elements in array)
句法: M = max(A) M = max(A,[],dim) [M,I] = max(___) C = max(A,B) ___ = max(___,nanflag) 描述: M=max(A) ...
- 最近学习的 Node.js 基础:安装、环境配置、forever
最近工作中,因为某某某某原因,需要用到Node.js . 发现在很多方面和python很像,比如generator / yield ,比如模块的使用方式,比如http模块. 先安装个环境,windo ...
- openLayer3地图的使用心得
准备运行环境: 1)Portable Basemap Server(PBS)用于创建地图服务 官网网址:http://geopbs.codeplex.com/ 如何创建底图服务?操作步骤如下: 如果启 ...
- [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 ...
- LeetCode Minimum Moves to Equal Array Elements II
原题链接在这里:https://leetcode.com/problems/minimum-moves-to-equal-array-elements-ii/ 题目: Given a non-empt ...
- 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 ...
- (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 ...
- 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 ...
随机推荐
- Linux_使用Linux之安装jdk 7
工具/原料 jdk7源码安装压缩包 方法/步骤 卸载OpenJDK rpm -qa | grep java rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1 ...
- 解决javax.imageio.IIOException: Can't create output stream!
解决javax.imageio.IIOException: Can't create output stream! javax.imageio.ImageIO.write(image, "J ...
- Qt connect parent widget 连接父控件的信号槽
Qt中的信号槽系统是不同类中间传递数据的神器,如果连接父子空间之间的信号槽很重要,在父类中实例化子类的时候一定要注意将父类连上,不然信号槽无法使用,比如若子类是个对话框Dialog类,一定不要忘了加t ...
- Marching Cube
GPU-Marching-Cubes An Implementation of the Marching Cubes[1] Algorithm Marching Cubes Matlab The St ...
- Html - 瀑布流
瀑布流,又称瀑布流式布局.是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部.最早采用此布局的网站是Pinterest,逐渐 ...
- [转]动态调用webservice时 ServiceDescriptionImporter类在vs2010无法引用的解决方法
本文转自:http://blog.csdn.net/limlimlim/article/details/8647038 [导读]ServiceDescriptionImporter是创建Web Ser ...
- data structure | heap
#include <iostream> #include <string.h> using namespace std; template <class T> cl ...
- 为公司无线网络启用802.1x协议
1. EAP类型: EAP-PEAP, EAP-TLS, EAP-TTLS, EAP-MD5 TLS需要客户端服务器端都有证书; 而PEAP和TTLS只需要服务器端证书. 2. 身份验证协议: PAP ...
- ajax的同步和异步问题 (转)
async默认的设置值为true,这种情况为异步方式,当ajax发送请求后,在等待server端返回的数据的过程中,程序会继续执行ajax块后面的代码,直到服务器返回正确的结果才会去执行success ...
- memory_limit session.cache_expire ecshop初始化注释说明
memory_limit session.cache_expire ecshop初始化注释说明 memory_limit = 128M; 一个脚本所能够申请到的最大内存字节数(可以使用K和M作为单位) ...