• 题目:对数组中的每个元素求除自身外的其他元素的乘积

  • 要求:

    1. 不能用除法(直接排除了一般思路)

    2. 时间复杂度要求线性(排除了遍历依次求解的方法)

    3. 空间复杂度要求:额外空间为常数个

  • 思路:

    考虑了1,2条要求之后,能想到的方法就是re[i]为num[i]左边的i-1个数的累积乘以右边的n-i个数的累积,比如我们可以设为

re[i] = left[i] * right[i]

由于left[i + 1] = left[i] num[i], right[i] = right[i + 1] num[i],可见在线性时间内完成是可行的。

但是,这样会产生2n的额外空间消耗。我们可以考虑,先将计算的left直接存储在结果数组res中,而与此同时,由于right数组有right[i] = right[i + 1] num[i]这样的性质,因而可以将其用一个变量代替,在求解过程中不断更新即可。

  • 代码:
    class Solution(object):

       def productExceptSelf(self, nums):n = len(nums)res = [1] * ntemp = 1for i in range(0, n - 1):res[i + 1] = res[i] * nums[i]for i in range(n - 1, 0, -1):res[i] *= temptemp *= nums[i]res[0] = res[0] * tempreturn res

【leetcode238】Product of Array Except Self相关推荐

  1. 【 MATLAB 】sort ( Sort array elements )

    sort Sort array elements Syntax B = sort(A) B = sort(A,dim) B = sort(___,direction) B = sort(___,Nam ...

  2. 【C++】40. std::array与int a[]方式创建数组的区别

    C++11中std::array的使用 std::array<type,size> array1; std::array<int,3> array1和 int a[]={1,2 ...

  3. 【备忘录】Product cost collectors – 成本收集器

    以生产角度来划分: 流程制造 - Product Cost by Period 离散制造 - Product Cost by Period & Product Cost by Order 这里 ...

  4. 【Todo】【转载】Scala中Array, List, Tuple的区别

    参考了这篇文章: https://my.oschina.net/u/1034176/blog/512314 1. 在Scala 2.7中,Array.List都不能混合类型,只有Tuple可以:而在S ...

  5. 【JavaScript】JS的Array的用法总结

    目录 Array的长度相关问题 indexOf取元素下标 slice操作 push和pop操作 unshift和shift操作 sort操作 reverse操作 spilce操作 concat函数 j ...

  6. 【leetcode】Merge Sorted Array

    题目描述 Given two sorted integer arrays A and B, merge B into A as one sorted array. Note: You may assu ...

  7. 【quartus】packed unpacked array

    问题描述: packed array和 unpacked array,是我在SV里学到的概念. 但是在quartus syn的时候,会报错. 解决方法: 1. packed array的概念 2.以s ...

  8. 【20211123】【Python】修改list/array中的某些数值时,报错TypeError: can only assign an iterable,原因分析及正确的操作方式

    一.提个需求先~ 有一个列表 a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19],现在想要修改其中的 ...

  9. 【Leetcode】Shuffle an Array

    题目链接:https://leetcode.com/problems/shuffle-an-array/ 题目: Shuffle a set of numbers without duplicates ...

最新文章

  1. Spring AOP的一些概念
  2. ucos操作系统的内核有哪些调度方法
  3. 【Linux网络】Linux Socket编程 TCP协议
  4. 李林APUE之进程的封装
  5. 天气预报今天几点下雨_今天,秦皇岛多家景区临时闭园!最新天气预报发布
  6. pytorch查看模型的可训练参数
  7. 最近很火的夏日便捷小空调源码(小程序版)
  8. 201521123050 《Java程序设计》第13周学习总结
  9. 解决ImageLoader加载HTTPS图片证书校验异常问题
  10. 工厂设计模式——抽象工厂
  11. 触发器及其应用实验报告总结_带你了解IGBT驱动电路的应用
  12. java布尔类型 向上转型_JAVA_多态性演示a____自动向上转型、向下转型、检查对象是否为某个类型(instanceof)...
  13. 华硕电脑的触摸板关闭
  14. 数字通信技术知识点一
  15. gcforest 深度森林原理及实现
  16. 将EXCEL自定义时间格式转换为时间格式
  17. 25个很酷的jQuery倒计时脚本–添加动态计数器!
  18. Wireshark之流量包分析+日志分析 (护网:蓝队)web安全 取证 分析黑客攻击流程(上篇)
  19. oracle datafile损坏,Oracle某个数据文件损坏,如何打开数据_oracle
  20. G1D5-Intriguing properties of neural networks

热门文章

  1. CAD二次开发学习笔记二(创建一个对话框)
  2. ASP.NET C# 货币转换函数 中文大写金额 英文金额
  3. Python 学习笔记13 类 - 继承
  4. validate插件深入学习-01 小白从看透一个插件开始
  5. 程序猿工作效率的影响因素和管理者怎样推断
  6. [LeetCode]Maximal Rectangle
  7. 设置普通用户加入域配额
  8. JDK1.6.0下载安装与环境配置
  9. Jenkins plugin
  10. 如何给邮件添加背景颜色