当前位置: 首页 > news >正文

力扣刷题Day 41:除自身以外数组的乘积(238)

1.题目描述

2.思路

方法1:搞一个数组存放各元素之前所有数的乘积(头为1),再搞一个数组存放各元素之后所有数的乘积(尾为1)。

方法2:上面的方法是很好理解的,在此基础上应该如何优化呢?那就是弃用prev_product数组,改用变量记录前面数的乘积,并且取消latter_product数组,直接在res数组上修改乘积。

3.代码(Python3)

方法1:

class Solution:def productExceptSelf(self, nums: List[int]) -> List[int]:prev_product = [1]latter_product = [1]res = []for i in range(1, len(nums)):prev_product.append(prev_product[i - 1] * nums[i - 1])for i in range(len(nums) - 1, 0, -1):latter_product.insert(0, latter_product[0] * nums[i])for i in range(0, len(nums)):res.append(prev_product[i] * latter_product[i])return res

方法2:

class Solution:def productExceptSelf(self, nums: List[int]) -> List[int]:res = [1]for i in range(len(nums) - 1, 0, -1):res.insert(0, res[0] * nums[i])prev_product = 1for i in range(0, len(nums)):if i != 0:prev_product *= nums[i - 1]res[i] *= prev_productreturn res

4.执行情况

方法1:

方法2:

5.感想

我尽力了,不知道还能怎么优化了。看了Krahets佬的题解和我的方法2完全一致,但是性能怎么这么差呢?

相关文章:

  • n8n - 开放灵活的智能自动化工作流平台
  • vue教程(vuepress版)
  • 【Python】pyinstaller 反编译 exe
  • FPGA图像处理(四)------ 图像裁剪
  • 【C语言】(8)—指针2
  • 65.Three.js案例-使用 MeshNormalMaterial 和 MeshDepthMaterial 创建 3D 图形
  • Screeps Arena基础入门
  • 基于STM32、HAL库的CP2104 USB转UART收发器 驱动程序设计
  • 最新Spring Security实战教程(十四)OAuth2.0精讲 - 四种授权模式与资源服务器搭建
  • 湖南省密码协会成立,麒麟信安担任副会长单位共话密码创新应用之道
  • 【Python Web开发】05-WSGI概述
  • WordPress插件:WPJAM Basic优化设置
  • 数据库(MySQL)基础
  • 【AI提示词】费曼学习法导师
  • 【时时三省】(C语言基础)怎样定义和引用二维数组
  • 开平机:卷材高效成板的核心装备
  • 无需标记点,精准面部捕捉!无线面捕头盔赋予自由表演空间
  • Java大师成长计划之第15天:Java线程基础
  • 3.5/Q1,GBD数据库最新文章解读
  • ubuntu24.04安装anaconda
  • 现在企业需要建设网站吗/网上如何推广自己的产品