LeetCode.238 Product of Array Except Self
来源:互联网 发布:淘宝网男徒步凉鞋 编辑:程序博客网 时间:2024/05/29 13:07
题目:
Given an array of n integers where n > 1, nums
, return an array output
such that output[i]
is equal to the product of all the elements of nums
except nums[i]
.
Solve it without division and in O(n).
For example, given [1,2,3,4]
, return [24,12,8,6]
.
Follow up:
Could you solve it with constant space complexity? (Note: The output array does not count as extra space for the purpose of space complexity analysis.)
分析:
class Solution { public int[] productExceptSelf(int[] nums) { //给定数组,返回的是全数组所有元素之积(但是不包括当前该元素),不能使用除法。 //注意:1.积的长度可能会越界。2.以及长度太长,超时 //思路:传统分两部分(前和后)容易超时,需要跳过相同的数据,使用HashMap,相同的数据,直接赋值相同。 int [] res=new int [nums.length]; HashMap<Integer,Integer> hm=new HashMap<Integer,Integer>(); for(int i=0;i<nums.length;i++){ //跳过相同的 if(hm.containsKey(nums[i])){ //存在相同项 res[i]=hm.get(nums[i]); }else{ //不存在,将结果压入map,作为记录 int temp=1; for(int head=0;head<i;head++){ temp*=nums[head]; } for(int tail=i+1;tail<nums.length;tail++){ temp*=nums[tail]; } res[i]=temp; hm.put(nums[i],temp); } } return res; }}
分析2(推荐):
class Solution { public int[] productExceptSelf(int[] nums) { //参考答案解法:利用一个数组存入该数的前n-1个积。 int [] res=new int[nums.length]; int temp=1; res[0]=1; for(int i=1;i<nums.length;i++){ //前n-1个数对应的积和 res[i]=res[i-1]*nums[i-1]; } int right=1; for(int i=nums.length-1;i>=0;i--){ //从最末尾开始,末尾数的非它积为res[i]*1=res[i] //倒数第2个数:它前n-1积和*倒数第一个数即它的非它积 //以此类推 res[i]*=right; right*=nums[i]; } return res; }}
阅读全文
0 0
- leetcode 238: Product of Array Except Self
- LeetCode 238: Product of Array Except Self
- Leetcode #238 Product of Array Except Self
- Leetcode 238 Product of Array Except Self
- [leetcode 238]Product of Array Except Self
- LeetCode(238)Product of Array Except Self
- leetcode 238: Product of Array Except Self
- Leetcode #238 Product of Array Except Self
- [LeetCode 238] Product of Array Except Self
- leetcode 238:Product of Array Except Self
- Product of Array Except Self - LeetCode 238
- LeetCode 238 Product of Array Except Self
- 【LEETCODE】238-Product of Array Except Self
- LeetCode 238:Product of Array Except Self
- leetcode 238 Product of Array Except Self
- leetcode 238: Product of Array Except Self
- [LeetCode 238] Product of Array Except Self
- LeetCode[238]Product of Array Except Self
- UVA 1398
- Bmob 移动后端云服务器平台实现登录注册
- RNN与LSTM
- leetcode-561. Array Partition I
- 使用Android Studio时遇到的两个问题及解决方法
- LeetCode.238 Product of Array Except Self
- C++ 类的深拷贝与浅拷贝||深拷贝通过重载拷贝构造函数与重载赋值运算符实现
- 堆排序
- python爬取的小说存入mysql数据库
- git+rsync+邮件通告
- Hibernate Query 的 list 和iterate方法缓存的区别
- 1032. 挖掘机技术哪家强(20)
- 10.Struts2_ActionSupport
- uva 10635