博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode238. Product of Array Except Self(思路及python解法)
阅读量:2241 次
发布时间:2019-05-09

本文共 1240 字,大约阅读时间需要 4 分钟。

Given an array nums of n integers where n > 1,  return an array output such that output[i] is equal to the product of all the elements of nums except nums[i].

Example:

Input:  [1,2,3,4]Output: [24,12,8,6]

Note: Please solve it without division and in O(n).

Follow up:

Could you solve it with constant space complexity? (The output array does not count as extra space for the purpose of space complexity analysis.)


要求不能用除法,空间复杂度也要求固定空间。

最开始的想法很简单,就是用list切片的方法,把num乘以其他位置所有数。

不过这样并不是常量空间,速度也非常慢。

class Solution:    def productExceptSelf(self, nums: List[int]) -> List[int]:        import numpy as np        ans=np.ones(len(nums))        for i,num in enumerate(nums):            ans[:i]*=num            ans[i+1:]*=num                return list(map(int,ans))

看了discuss中的一个方法,很受启发。

比如nums是          [1 2 3 4 5]

经过第一个for循环ans是[- 1 12 123 1234],也就是每个位置保存的是它之前所有数的乘积

第二个for循环的p是    [2345 345 45 5 -],也就是它之后所有数的乘积

所以相乘后,ans最后结果[2345, 1345, 1245, 1235, 1234]

class Solution:    def productExceptSelf(self, nums: List[int]) -> List[int]:        ans = []        p=1        for i in range(len(nums)):            ans.append(p)            p= p*nums[i]        p=1        for i in range(len(nums)-1,-1,-1):            ans[i]*=p            p= p*nums[i]        return ans

 

转载地址:http://ycrbb.baihongyu.com/

你可能感兴趣的文章
TP5.1项目从windows的Apache服务迁移到linux的Nginx服务需要注意几点。
查看>>
win10安装软件 打开时报错 找不到 msvcp120.dll
查看>>
PHPunit+Xdebug代码覆盖率以及遇到的问题汇总
查看>>
PHPUnit安装及使用
查看>>
PHP项目用xhprof性能分析(安装及应用实例)
查看>>
composer安装YII
查看>>
Sublime text3快捷键演示
查看>>
sublime text3 快捷键修改
查看>>
关于PHP几点建议
查看>>
硬盘的接口、协议
查看>>
VLAN与子网划分区别
查看>>
Cisco Packet Tracer教程
查看>>
02. 交换机的基本配置和管理
查看>>
03. 交换机的Telnet远程登陆配置
查看>>
微信小程序-调用-腾讯视频-解决方案
查看>>
phpStudy安装yaf扩展
查看>>
密码 加密 加盐 常用操作记录
查看>>
TP 分页后,调用指定页。
查看>>
Oracle数据库中的(+)连接
查看>>
java-oracle中几十个实用的PL/SQL
查看>>