当前位置: 首页 > 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完全一致,但是性能怎么这么差呢?

http://www.xdnf.cn/news/333991.html

相关文章:

  • 【Linux】Linux工具(1)
  • 基于Centos7的DHCP服务器搭建
  • 【MySQL】存储引擎 - MyISAM详解
  • ARM 芯片上移植 Ubuntu 操作系统详细步骤
  • 云原生架构下的企业数字化转型之路:理念、挑战与落地实战
  • 2. Windows+Msys2+QGis3.36.1编译运行
  • 【Python开源】深度解析:一款高效音频封面批量删除工具的设计与实现
  • Axios替代品Alova
  • nutui-uniapp项目:弹框、弹出层的组件选择问题(组件对比)
  • 基于腾讯云MCP广场的AI自动化实践:爬取小红书热门话题
  • STM32系统定时器以及微秒延时函数分析
  • 电池自动分选机:新能源时代的“质检卫士”
  • Excel学习笔记
  • 蓝桥杯第十六届c组c++题目及个人理解
  • C++入门(下)--《Hello C++ World!》(2)(C/C++)
  • 【C++】手搓一个STL风格的string容器
  • 【开源解析】基于Python的智能文件备份工具开发实战:从定时备份到托盘监控
  • 键盘固件刷写详解:Bootloader
  • AppInventor2如何实现写文件不覆盖,而是在文件尾部追加?
  • 使用 React 实现语音识别并转换功能
  • Java游戏服务器开发流水账(2)开发中Maven的管理
  • CROSS 技术全解析:边缘计算如何成为行业价值新引擎
  • Linux下使用openssh搭建sftp服务
  • SQL:MySQL函数:字符串函数
  • 金仓数据库征文-金仓KES数据同步优化实践:逻辑解码与增量同步
  • 深入理解负载均衡:传输层与应用层的原理与实战
  • KRaft (Kafka 4.0) 集群配置指南(超简单,脱离 ZooKeeper 集群)还包含了简化测试指令的脚本!!!
  • WSL部署CosyVoice
  • node.js 实战——express图片保存到本地或服务器(七牛云、腾讯云、阿里云)
  • 能耗优化新引擎:EIOT平台助力企业降本增效