题目

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].

分析

给定一个数组序列,得到一个新的数组,新数组的output[i]位置元素值等于原数组中除了nums[i]外所有其他元素的乘积。

并且要求时间复杂度为O(n)

我们最先想到的肯定是二重循环,计算每个位置处的 output[i];但是,这样处理复杂度为O(n^2),不满足要求;

所以采取其它方法,分为两个步骤处理:

  1. 正序循环一次,对每个i位置的元素得到ret[i] = nums[0] * nums[1] * … *nums[i-1]
  2. 倒序循环一次,对每个i位置的元素当前乘积ret[i] *= nums[i+1] … nums[sz-1]

AC代码

class Solution {
public:
vector<int> productExceptSelf(vector<int>& nums) {
if (nums.empty())
return vector<int>(); int sz = nums.size();
vector<int> ret(sz, 0); //对每个i位置的元素得到ret[i] = nums[0] * nums[1] * ... *nums[i-1]
ret[0] = 1;
for (int i = 1; i < sz; ++i)
{
ret[i] = ret[i - 1] * nums[i-1];
}//for //对每个i位置的元素当前乘积ret[i] *= nums[i+1] ... nums[sz-1]
int tmp = 1;
for (int i = sz - 1; i >= 0; --i)
{
ret[i] *= tmp;
tmp *= nums[i];
}
return ret;
}
};

GitHub测试程序源码

LeetCode(238) Product of Array Except Self的更多相关文章

  1. LeetCode(88)Merge Sorted Array

    题目 Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note ...

  2. LeetCode(40)-Merge Sorted Array

    听到初爱有感 开头啰嗦两句,刚在做算法题目的时候,听到了杨宗纬的<初爱>,突然有了一种本科时候的感觉,想想自己现在研二了,青春喂了狗,我果断喝了一罐啤酒,循环这首歌到吐-.. 题目: Gi ...

  3. LeetCode(108) Convert Sorted Array to Binary Search Tree

    题目 Given an array where elements are sorted in ascending order, convert it to a height balanced BST. ...

  4. LeetCode(154) Find Minimum in Rotated Sorted Array II

    题目 Follow up for "Find Minimum in Rotated Sorted Array": What if duplicates are allowed? W ...

  5. LeetCode(275)H-Index II

    题目 Follow up for H-Index: What if the citations array is sorted in ascending order? Could you optimi ...

  6. LeetCode(220) Contains Duplicate III

    题目 Given an array of integers, find out whether there are two distinct indices i and j in the array ...

  7. LeetCode(122) Best Time to Buy and Sell Stock II

    题目 Say you have an array for which the ith element is the price of a given stock on day i. Design an ...

  8. LeetCode(116) Populating Next Right Pointers in Each Node

    题目 Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode * ...

  9. LeetCode(113) Path Sum II

    题目 Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given ...

随机推荐

  1. cmd下一些常用的命令

    systeminfo   列出主机名,内存等一些系统信息 tasklist 显示进程信息      (tasklist | finstr eclipse)

  2. D. Restructuring Company 并查集 + 维护一个区间技巧

    http://codeforces.com/contest/566/problem/D D. Restructuring Company time limit per test 2 seconds m ...

  3. .net C#实现 中文转Unicode、Unicode转中文 及与js对应关系

    中文转Unicode:HttpUtility.UrlEncodeUnicode(string str); 转换后中文格式:"%uxxxx"  举例:"柳_abc123&q ...

  4. 通过Maven构建打包Spring boot,并将config配置文件提取到jar文件外

    如果通过不同的IDE打包,着实会觉得依赖性太大,并且容易出现错误,操作也比较复杂 同时,spring-boot-maven-plugin的使用感觉,相关配置太少,并且无法满足方便部署和运行的需求. 这 ...

  5. 【Unity3D】3D游戏学习

    1.理解游戏元素,简单回答以下问题: 1.1简单介绍一款上世纪(19XX)出品的计算机游戏,然后按课件的方法描述游戏的五个基本元素.(讲目标.玩法.规则) 1.1.1仙剑奇侠传 <仙剑奇侠传&g ...

  6. idea2018.1.2 激活

    https://www.cnblogs.com/ycjcham/p/8724451.html

  7. put_user

    1. put_user Name put_user --    Write a simple value into user space. Synopsis put_user ( x, ptr); A ...

  8. Python之查询最新的文件

    import os # 定义文件的目录 result_dir = r'E:\python\测试报告' lists = os.listdir(result_dir) # 重新按时间对目录下的文件进行排序 ...

  9. Html style="visibility:hidden"与style="display:none"的区别

    style="visibility:hidden": 使对象在网页上隐藏,但该对象在网页上所占的空间没有改变. style="display:none": 使对 ...

  10. 理解Postgres性能

    目录[-] 理解Postgres性能 理解缓存和缓存命中率 理解索引用途 Heroku Dashboard示例 索引缓存命中率 理解Postgres性能 对于很多应用程序开发人员来说数据库就是一个黑盒 ...