leecode 238除自身以外数组的乘积

class Solution {
public:
    vector<int> productExceptSelf(vector<int>& nums) {
        //用除法必须要考虑元素为0的情况,用双重循环要考虑数组过大超时的情况
        //双指针双vector O(n)time O(n) space
        int n=nums.size();
        vector<int> frombegin(n+1,0);
        vector<int> fromend(n+1,0);
        vector<int> output(n);
        frombegin[0]=1,fromend[n]=1;
        for(int i=1;i<=n;i++){
            frombegin[i]=frombegin[i-1]*nums[i-1];
            fromend[n-i]=fromend[n-i+1]*nums[n-i];
        }
        for(int i=0;i<n;i++){
            output[i]=frombegin[i]*fromend[i+1];
        }
        return output;
    }
};

原文地址:https://www.cnblogs.com/joelwang/p/10970708.html

时间: 2024-10-31 00:18:31

leecode 238除自身以外数组的乘积的相关文章

238. 除自身以外数组的乘积

给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积. 示例: 输入: [1,2,3,4] 输出: [24,12,8,6] 说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题. class Solution { public int[] productExceptSelf(int[] nums) { int[] result = new int[nums.length]

第238题:除自身以外数组的乘积

一. 问题描述 给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积. 示例: 输入: [1,2,3,4] 输出: [24,12,8,6] 说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题. 进阶: 你可以在常数空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的,输出数组不被视为额外空间) 二. 解题思路 本题思路:本题采用双指针的方式进行求解,由于题目要求请

leecode第二百三十八题(除自身以外数组的乘积)

class Solution { public: vector<int> productExceptSelf(vector<int>& nums) { int len=nums.size(); vector<int> res; for(int i=0,temp=1;i<len;i++)//把前面的乘起来,暂存起来 { res.push_back(temp); temp=temp*nums[i]; } for(int i=len-1,temp=1;i>

数组的乘积

输入一个数组,输出除当前元素外其他元素的乘积数组 一般是算left,right数组然后相乘,时间复杂度o(n),空间复杂度o(n) 好的方法如下 int *cal(int *input,int n) { int i; int *result = new int [n]; result[0] = 1; for(i=1;i < n;i++) result[i]=result[i-1] * input[i-1]; result[0]=input[n-1]; for(i=n-2;i > 0;i--)

除自身以外数组的乘积

给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积. 说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题. 思路:乘积值应该是左边值乘以右边值.需要循环两遍,才能得到正确的结果. class Solution { public: vector<int> productExceptSelf(vector<int>& nums) { vecto

leetcode腾讯精选练习之除自身以外数组的乘积(十)

最长公共前缀 题目 给定长度为?n?的整数数组?nums,其中?n > 1,返回输出数组?output?,其中 output[i]?等于?nums?中除?nums[i]?之外其余各元素的乘积. 示例: 输入: [1,2,3,4] 输出: [24,12,8,6] 说明: 请不要使用除法,且在?O(n) 时间复杂度内完成此题. 思路 第一种思路O(n2):但是不符合题目要求 两层循环遍历,思路很简单不详细说了第一层遍历数组中中的每个数,第二层遍历求解除了本身之外的乘积. 第二种思路就是除法:也不符合

腾讯 2018 秋招精选(50 题)

AC # 题名 难度   2 两数相加  中等   4 两个排序数组的中位数  困难   5 最长回文子串  中等   7 反转整数  简单   8 字符串转整数  中等   9 回文数   简单   11 盛最多水的容器  中等   14 最长公共前缀  简单   15 三数之和   中等   16 最接近的三数之和  中等   20 有效的括号  简单   21 合并两个有序链表  简单   23 合并k个有链表  困难   26 删除排序数组中的重复项   简单   33 搜索旋转排序数组

leet

# 题名1 两数之和    2 两数相加    3 无重复字符的最长子串    4 寻找两个有序数组的中位数    5 最长回文子串    6 Z 字形变换    7 整数反转    8 字符串转换整数 (atoi)    9 回文数    10 正则表达式匹配    11 盛最多水的容器    12 整数转罗马数字    13 罗马数字转整数    14 最长公共前缀    15 三数之和    16 最接近的三数之和    17 电话号码的字母组合    18 四数之和    19 删除链表

刷题篇--热题HOT 61-70

207.课程表 现在你总共有 n 门课需要选,记为 0 到 n-1.在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及它们的先决条件,判断是否可能完成所有课程的学习? 示例 1:输入: 2, [[1,0]],输出: true,解释: 总共有 2 门课程.学习课程 1 之前,你需要完成课程 0.所以这是可能的. 示例 2:输入: 2, [[1,0],[0,1]]输出: false,解释: 总共有 2 门课程