LeetCode(238) Product of Array Except Self
题目
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),不满足要求;
所以采取其它方法,分为两个步骤处理:
- 正序循环一次,对每个i位置的元素得到ret[i] = nums[0] * nums[1] * … *nums[i-1]
- 倒序循环一次,对每个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;
}
};
LeetCode(238) Product of Array Except Self的更多相关文章
- LeetCode(88)Merge Sorted Array
题目 Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note ...
- LeetCode(40)-Merge Sorted Array
听到初爱有感 开头啰嗦两句,刚在做算法题目的时候,听到了杨宗纬的<初爱>,突然有了一种本科时候的感觉,想想自己现在研二了,青春喂了狗,我果断喝了一罐啤酒,循环这首歌到吐-.. 题目: Gi ...
- 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. ...
- LeetCode(154) Find Minimum in Rotated Sorted Array II
题目 Follow up for "Find Minimum in Rotated Sorted Array": What if duplicates are allowed? W ...
- LeetCode(275)H-Index II
题目 Follow up for H-Index: What if the citations array is sorted in ascending order? Could you optimi ...
- LeetCode(220) Contains Duplicate III
题目 Given an array of integers, find out whether there are two distinct indices i and j in the array ...
- 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 ...
- LeetCode(116) Populating Next Right Pointers in Each Node
题目 Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode * ...
- 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 ...
随机推荐
- cmd下一些常用的命令
systeminfo 列出主机名,内存等一些系统信息 tasklist 显示进程信息 (tasklist | finstr eclipse)
- D. Restructuring Company 并查集 + 维护一个区间技巧
http://codeforces.com/contest/566/problem/D D. Restructuring Company time limit per test 2 seconds m ...
- .net C#实现 中文转Unicode、Unicode转中文 及与js对应关系
中文转Unicode:HttpUtility.UrlEncodeUnicode(string str); 转换后中文格式:"%uxxxx" 举例:"柳_abc123&q ...
- 通过Maven构建打包Spring boot,并将config配置文件提取到jar文件外
如果通过不同的IDE打包,着实会觉得依赖性太大,并且容易出现错误,操作也比较复杂 同时,spring-boot-maven-plugin的使用感觉,相关配置太少,并且无法满足方便部署和运行的需求. 这 ...
- 【Unity3D】3D游戏学习
1.理解游戏元素,简单回答以下问题: 1.1简单介绍一款上世纪(19XX)出品的计算机游戏,然后按课件的方法描述游戏的五个基本元素.(讲目标.玩法.规则) 1.1.1仙剑奇侠传 <仙剑奇侠传&g ...
- idea2018.1.2 激活
https://www.cnblogs.com/ycjcham/p/8724451.html
- put_user
1. put_user Name put_user -- Write a simple value into user space. Synopsis put_user ( x, ptr); A ...
- Python之查询最新的文件
import os # 定义文件的目录 result_dir = r'E:\python\测试报告' lists = os.listdir(result_dir) # 重新按时间对目录下的文件进行排序 ...
- Html style="visibility:hidden"与style="display:none"的区别
style="visibility:hidden": 使对象在网页上隐藏,但该对象在网页上所占的空间没有改变. style="display:none": 使对 ...
- 理解Postgres性能
目录[-] 理解Postgres性能 理解缓存和缓存命中率 理解索引用途 Heroku Dashboard示例 索引缓存命中率 理解Postgres性能 对于很多应用程序开发人员来说数据库就是一个黑盒 ...