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

【hot100】刷题记录(7)-除自身数组以外的乘积

题目描述:

给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。

题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在  32 位 整数范围内。

请 不要使用除法,且在 O(n) 时间复杂度内完成此题。

 

示例 1:

输入: nums = [1,2,3,4]
输出: [24,12,8,6]

示例 2:

输入: nums = [-1,1,0,-3,3]
输出: [0,0,9,0,0]

 

提示:

  • 2 <= nums.length <= 105
  • -30 <= nums[i] <= 30
  • 输入 保证 数组 answer[i] 在  32 位 整数范围内

 

我的作答:

第一次接触上三角和下三角的概念呃呃呃

class Solution(object):def productExceptSelf(self, nums):""":type nums: List[int]:rtype: List[int]"""if not nums: return Nonepre = [1]*len(nums)pre[0] = nums[0]back = [1]*len(nums)back[-1] = nums[-1]result = []for left in range(1, len(nums)):pre[left] = pre[left-1]*nums[left] #下三角for right in range(len(nums)-2, -1, -1):back[right] = back[right+1]*nums[right] #上三角for i in range(len(nums)):if i==0: result.append(back[1])elif i==len(nums)-1: result.append(pre[i-1])else:result.append(pre[i-1]*back[i+1])return result

 

参考:

其实在另一个三角的时候就可以乘积了

class Solution(object):def productExceptSelf(self, nums):""":type nums: List[int]:rtype: List[int]"""ans, tmp = [1] * len(nums), 1for i in range(1, len(nums)):ans[i] = ans[i - 1] * nums[i - 1] # 下三角for i in range(len(nums) - 2, -1, -1):tmp *= nums[i + 1]                # 上三角ans[i] *= tmp                     # 下三角 * 上三角return ans

 

http://www.lryc.cn/news/528717.html

相关文章:

  • 解决.NET程序通过网盘传到Linux和macOS不能运行的问题
  • 练习(复习)
  • Class2(2020):Shell基础(二)——Shell脚本设计基础
  • HBase-2.5.10 伪分布式环境搭建【Mac】
  • 计算机毕业设计Python+CNN卷积神经网络高考推荐系统 高考分数线预测 高考爬虫 协同过滤推荐算法 Vue.js Django Hadoop 大数据毕设
  • macos的图标过大,这是因为有自己的设计规范
  • 2025_1_29 C语言学习中关于指针
  • 解决ImportError: cannot import name ‘notf‘
  • HTML<label>标签
  • shiro学习五:使用springboot整合shiro。在前面学习四的基础上,增加shiro的缓存机制,源码讲解:认证缓存、授权缓存。
  • 大数据Hadoop入门1
  • 《智能家居“孤岛危机”:设备孤立如何拖垮系统优化后腿》
  • DeepSeek介绍及使用ollama本地化部署DeepSeek-R1大模型
  • 网络安全攻防实战:从基础防护到高级对抗
  • 9【如何面对他人学习和生活中的刁难】
  • kafka消费者详细介绍(超级详细)
  • 数据结构选讲 (更新中)
  • OpenBMC:简介
  • java 正则表达式匹配Matcher 类
  • 【HarmonyOS之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(三)
  • CSS(快速入门)
  • 使用 concurrently 实现前后端一键启动
  • 常见端口的攻击思路
  • 大数据治理实战:架构、方法与最佳实践
  • 忘记宝塔的访问地址怎么找
  • SQL教程-基础语法
  • shell脚本批量修改文件名之方法(The Method of Batch Modifying File Names in Shell Scripts)
  • 组合模式 - 组合模式的实现
  • 视频外绘技术总结:Be-Your-Outpainter、Follow-Your-Canvas、M3DDM
  • 【硬件测试】基于FPGA的QPSK+帧同步系统开发与硬件片内测试,包含高斯信道,误码统计,可设置SNR