LeetCode 题解(146): Product of Array Except Self
来源:互联网 发布:万得股票for mac 编辑:程序博客网 时间:2024/06/05 07:04
题目:
Given an array of n integers where n > 1, nums
, return an arrayoutput
such thatoutput[i]
is equal to the product of all the elements ofnums
exceptnums[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.)
两种解法,一种递归求当前元素的前半部分积,并通过递归获得后半部分积,相乘得结果。
解法二, [1, a1, a1 * a2, a1 * a2 * a3] 乘以 [a4 * a3 * a2, a4 * a3, a4, 1], 用一个变量保存计算的中间结果。
C++版解法一:
class Solution {public: vector<int> productExceptSelf(vector<int>& nums) { compute(nums, 1, 0, nums.size()); return nums; } int compute(vector<int>& nums, int front, int index, int N) { int back = 1; if(index < N) { int cur = nums[index]; back = compute(nums, front * cur, index + 1, N); nums[index] = front * back; back *= cur; } return back; }};
C++版解法二:
class Solution {public: vector<int> productExceptSelf(vector<int>& nums) { vector<int> result(nums.size(), 1); int p = nums[0]; for(int i = 1; i < nums.size(); i++) { result[i] = p; p *= nums[i]; } p = nums[nums.size()-1]; for(int i = nums.size() - 2; i >= 0; i--) { result[i] *= p; p *= nums[i]; } return result; }};
Java版解法二:
public class Solution { public int[] productExceptSelf(int[] nums) { int[] result = new int[nums.length]; int p = nums[0]; result[0] = 1; for(int i = 1; i < nums.length; i++) { result[i] = p; p *= nums[i]; } p = nums[nums.length-1]; for(int i = nums.length - 2; i >= 0; i--) { result[i] *= p; p *= nums[i]; } return result; }}
Python版解法一:
class Solution: # @param {integer[]} nums # @return {integer[]} def productExceptSelf(self, nums): self.compute(nums, 1, 0, len(nums)) return nums def compute(self, nums, front, index, total): back = 1 if index < total: cur = nums[index] back = self.compute(nums, front * cur, index + 1, total) nums[index] = front * back back *= cur return back
0 0
- LeetCode 题解(146): Product of Array Except Self
- LeetCode题解:Product of Array Except Self
- LeetCode 238. Product of Array Except Self 题解(C++)
- Leetcode题解 238. Product of Array Except Self
- Product of Array Except Self 题解
- [leetcode][array] Product of Array Except Self
- 【LeetCode】237 Product of Array Except Self
- #leetcode#Product of Array Except Self
- leetcode 238: Product of Array Except Self
- [leetcode] 238.Product of Array Except Self
- [leetcode] Product of Array Except Self
- LeetCode Product of Array Except Self
- leetCode(43):Product of Array Except Self
- LeetCode Product of Array Except Self
- 【leetcode】Product of Array Except Self
- 【leetcode】Product of Array Except Self
- leetcode: Product of Array Except Self
- [leetcode] Product of Array Except Self
- 获取imageview里的Bitmap
- bugzilla用户无法登录
- Java JDK1.5 Condition方法
- SlidingMenu (一)在Eclipse中如何引入SlidingMenu和其Demo
- Sybase ASE 查询结果保存到文件 output a SQL query results to a file
- LeetCode 题解(146): Product of Array Except Self
- GRE写作必备句型
- 15. Magento路由分发过程解析(四):请求重写
- 关于数组溢出------warning C4789: 内存复制的目标太小
- 使用perl的正则表达式对文件中的特定类型超链接里面的换行去掉,使其在一行
- 虚拟移动核心网:该面对现实了
- Spring MVC的单元测试
- 从Eclipse到Android Studio:Android项目如何进行迁移
- Android中Bitmap,byte[],Drawable相互转化