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

福州手机模板建站广州百度seo公司

福州手机模板建站,广州百度seo公司,做手机网站和pc如何做,wordpress上传图片代码题目 给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复…

题目

给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。
题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。
请 不要使用除法,且在 O(n) 时间复杂度内完成此题。

一、代码实现

func productExceptSelf(nums []int) []int {n := len(nums)answer := make([]int, n)// 计算左侧乘积answer[0] = 1for i := 1; i < n; i++ {answer[i] = answer[i-1] * nums[i-1]}// 计算右侧乘积并合并结果right := 1for i := n-1; i >= 0; i-- {answer[i] *= rightright *= nums[i]}return answer
}

二、算法分析

1. 核心思路

左右乘积分解:将每个位置的乘积拆分为左侧所有元素的乘积和右侧所有元素的乘积的积。
空间优化:复用输出数组,先存储左侧乘积,再动态计算右侧乘积并直接合并。

2. 关键步骤
  1. 左侧乘积计算:从左到右遍历,将每个位置的左侧乘积存入 answer 数组。
  2. 右侧乘积计算与合并:从右到左遍历,用变量 right 动态累积右侧乘积,并同步更新 answer 数组。
3. 复杂度

时间复杂度O(n),两次独立的线性遍历。
空间复杂度O(1)(不考虑输出数组的空间),仅使用常数额外空间。

三、图解

在这里插入图片描述

四、边界条件与扩展

1. 边界条件

全零数组:如 nums = [0,0,0] → 结果为 [0,0,0]
单个零元素:如 nums = [0,1,2] → 结果为 [2, 0, 0]
数组长度为1:如 nums = [5] → 结果为 [1](无其他元素可乘)。

2. 扩展验证

负数情况:如 nums = [-1, 2, -3] → 结果为 [-6, 3, -2]
大数溢出:题目保证结果在 32 位整数范围内,无需额外处理。

五、总结

核心逻辑:通过左右分解避免重复计算,两次遍历实现高效求解。
优化关键:复用输出数组存储中间结果,空间复杂度从 O(n) 优化至 O(1)
适用场景:类似“利用前后缀信息”的问题(如统计前后缀最大值、求和等)。

http://www.dtcms.com/wzjs/304892.html

相关文章:

  • 沂南县建设局网站百度信息流广告平台
  • 中山网站建设外包品牌策略包括哪些内容
  • 泉州市住房和乡村建设网站爱站网注册人查询
  • 重庆建筑建设委员会官方网站全网营销是什么意思
  • 深圳企业学校网站建设seo网络推广公司排名
  • 网页设计与网站建设区别吸引人的软文标题例子
  • seo诊断服务武汉seo网络优化公司
  • 腾讯邮箱企业邮箱注册深圳谷歌seo公司
  • dux5.0 WordPress谷歌搜索优化
  • 企业网站建设的报价淘宝数据分析
  • 个人用服务器seo网站推广工作内容
  • 潜江做网站免费制作小程序平台
  • wordpress获取专题名seo网站优化服务合同
  • 天津最好的网站建设5000人朋友圈推广多少钱
  • 关于网站建设的管理实践报告宁波seo网络推广定制
  • 视频素材网站怎么建百度广告竞价
  • 网站建设的提升seo设置是什么
  • wordpress 主机要求黑帽seo排名技术
  • 广州市建委官方网站国内建站平台
  • 免费注册个人网站官网seo网络营销的技术
  • 任意的关键词或网站做引流兰蔻搜索引擎营销案例
  • 网站怎么添加在线客服企业网站推广策划
  • 专做实习生招聘的网站百度搜索指数排行
  • 独立商城系统网站建设等服务肇庆seo优化
  • 网站banner怎么设计网站关键词推广价格
  • 在局域网内访问本机的asp网站2023年4 5月份疫情结束吗
  • 做网站需要钱吗360推广登陆
  • 商城版免费网站制作广告大全
  • 小型企业网站设计深圳网络营销怎么推广
  • 网站名称注册程序短视频运营