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

【力扣150Golang】除自身以外数组的乘积

题目:

给你一个整数数组 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]

进阶: 你可以在 O(1) 的额外空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的,输出数组 不被视为 额外空间。)

解法

        在不使用除法且在 O(n) 时间复杂度内完成这道题,可以引入两个与nums等长的数组,分别存储nums[i]左右两侧元素的乘积,最后将两者相乘,即可得到结果answer[i]。
        在此基础上,我们可以使用两个变量来计算并存储左右乘积,从而代替存储左右乘积的数组,降低空间复杂度。

时间复杂度:O(n)
空间复杂度:O(1)

代码

func productExceptSelf(nums []int) []int {
    n := len(nums)
    answer := make([]int, n)

    // 计算左侧乘积
    left := 1
    for i := 0; i < n; i++ {
        answer[i] = left 
        left *= nums[i]
    }

    // 计算右侧乘积并更新结果
    right := 1
    for i := n - 1; i >= 0; i-- {
        answer[i] *= right 
        right *= nums[i]
    }

    return answer
}


http://www.kler.cn/news/353207.html

相关文章:

  • 从0到1学习node.js(path模块以及HTTP协议)
  • SQL:字段a not in (筛选值 or 子查询),当字段a = null 或not in里面存在null时。sql筛选结果可能不符预期
  • Go:error处理机制和函数
  • FileLink内外网文件交换——致力企业高效安全文件共享
  • laravel 查询数据库
  • kubernetes(三)
  • SketchUp Pro 2024 for Mac 3D建模 草图设计大师软件安装【保姆级教程,简单小白轻松上手】
  • 箭头函数语法及书写规则。
  • 大模型量化算法之LLM.int8()
  • C语言——链表
  • (31)oracle数据泵导出
  • 使用Python语言结合OpenCV库来处理视频流和条形码/二维码的识别
  • docker逃逸方法汇总与简要分析
  • 【Sceneform-EQR】使用安卓设备的传感器实现3Dof的VR效果
  • atop命令详解
  • 服务器和中转机在网络安全方面
  • 打开网页 - 隐私设置限制浏览私密连接
  • Leetcode—1115. 交替打印 FooBar【中等】(多线程)
  • 代码随想录打卡Day 长度最小的子数组209 螺旋矩阵2 59
  • JavaWeb环境下Spring Boot在线考试系统的优化策略
  • Prometheus运维监控平台之服务发现配置、标签及监控规则编写(二)
  • 【Redis】CentOS 7 环境搭建 redis 最新版 7.4 分布式集群完整版详解
  • YOLO11改进 | 注意力机制 | 添加GAM注意力机制 【完整代码】
  • Frequency-Adaptive Dilated Convolution for Semantic Segmentation
  • 大数据面试题整理——Yarn
  • 【K8S系列】Kubernetes pod节点Pending或CrashLoopBackOff 问题及解决方案详解【已解决】