LeetCode238. 除自身以外数组的乘积

news/2025/1/15 23:38:29/

238. 除自身以外数组的乘积

  • 描述
  • 示例
  • 解题思路
    • 解法1(最最暴力求解,但不符合要求)
    • 解法2(暴力求解,也不符合要求,但时间复杂度O(N))
    • 解法3(最优解,符合题意,时间复杂度O(N))

描述

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

解题思路

解法1(最最暴力求解,但不符合要求)

一次遍历数组,把除自身以外的数子乘起来放在开辟的数组里,时间复杂度O(N^2)

int* productExceptSelf(int* nums, int numsSize, int* returnSize){int* p=(int*)malloc(numsSize*sizeof(int));*returnSize=numsSize;int i=0;for(i=0;i<numsSize;i++){int j=0;int sum=1;for(j=0;j<numsSize;j++){if(j!=i){sum*=nums[j];}}p[i]=sum;}return p;}

解法2(暴力求解,也不符合要求,但时间复杂度O(N))

循环一次,把数组乘积算出来,在循环一次,除于各个位置的数。

int* productExceptSelf(int* nums, int numsSize, int* returnSize){int* p=(int*)malloc(numsSize*sizeof(int));*returnSize=numsSize;int i=0;int sum=1for(i=0;i<numsSize;i++){sum*=nums[i];}for(i=0;i<numsSize;i++){p[i]=sum/nums[i];}return p;}

解法3(最优解,符合题意,时间复杂度O(N))

先遍历一次,求得各位置数的左边乘积之和放在p数组里
在遍历一次,将各位置数右边乘积之和算出来然后和放在p数组里面各位置左边乘积之和,互乘,最终结果放在p数组里。

int* productExceptSelf(int* nums, int numsSize, int* returnSize){int* p=(int*)malloc(numsSize*sizeof(int));*returnSize=numsSize;int i=0;//左侧乘积int left_sum=1;for(i=0;i<numsSize;i++){p[i]=left_sum;left_sum*=nums[i];}//左侧乘右侧乘积int right_sum=1;for(i=numsSize-1;i>=0;i--){p[i]*=right_sum;right_sum*=nums[i];}return p;}

http://www.ppmy.cn/news/47515.html

相关文章

Linux的.serivice文件介绍

一、什么是.service文件&#xff1f; linux中.servic文件是服务的配置文件&#xff0c;通过systemctl进行操作。存放位置&#xff1a;/usr/lib/systemd/system 二、配置说明 通常在&#xff0c;service配置文件中包含三个部分&#xff0c;分别为&#xff1a; 一、[Unit]:控制部…

创造rap一首,关于毕业论文难写,导师不负责

Verse1: 毕业季节&#xff0c;任务繁重 毕业论文&#xff0c;压力倍增 想着论文顺利&#xff0c;却被教授推脱 努力攀登高峰&#xff0c;却是一场空 Chorus: 毕业论文难写&#xff0c;导师不负责 对论文监督&#xff0c;一筹莫展 毕业论文难写&#xff0c;难缠之处 摆脱麻烦&am…

Unity记录3.5-地图-第三阶段总结

文章首发及后续更新&#xff1a;https://mwhls.top/4493.html&#xff0c;无图/无目录/格式错误/更多相关请至首发页查看。 新的更新内容请到mwhls.top查看。 欢迎提出任何疑问及批评&#xff0c;非常感谢&#xff01; 汇总&#xff1a;Unity 记录 摘要&#xff1a;柏林噪声与 …

Linux -- 进阶 Web服务器 基础前瞻( 二 )

WWW服务器的类型 &#xff1a; 静态网站 官方 &#xff1a; 仅提供用户浏览的单向静态网页&#xff0c;单纯是由服务器单向提供数据给客户端&#xff0c;Server 不 需要与client 端有互动&#xff0c;可以浏览网站&#xff0c;但是无法数据上传。 ( 说白就是 服务器提供的…

C++并发锁相关并发

互斥锁mutex #include <mutex> {std::mutex mtx;mtx.lock();// do somethingmtx.unlock(); } mutex成员方法&#xff1a;lock()、try_lock()、unlock() try_lock&#xff1a; 1&#xff09;所有线程都没有lock时&#xff0c;调用lock&#xff0c;并返回true&#xff1b;…

鉴智机器人重磅发布双目智驾解决方案,新一代全系智驾产品线亮相上海车展

4月18日&#xff0c;以「拥抱汽车行业新时代」为主题的2023上海车展正式拉开帷幕。以视觉3D理解为核心的下一代自动驾驶系统提供商鉴智机器人&#xff0c;携全新升级的智驾产品线首次亮相车展&#xff0c;重磅发布基于AI的双目立体视觉智驾方案。 凭借双目立体视觉系统的差异化…

Event Camera (事件相机)

1.传统相机的缺点 1.随着计算机视觉领域的不断发展&#xff0c;目标检测的算法也越来越多样化&#xff0c;特别是近些年深度学习在计算机视觉领域的进步&#xff0c;已经产生了很多优秀的目标检测方法&#xff0c;这些基于帧的方法对于图片的质量有一定的要求&#xff0c;比如合…

电感耦合等离子体原子发射光谱法(ICP-AES)

一、定义 电感耦合等离子体原子发射光谱法(ICP-AES)&#xff0c;是以电感耦合等离子矩为激发光源的光谱分析方法&#xff0c;具有准确度高和精密度高、检出限低、测定快速、线性范围宽、可同时测定多种元素等优点&#xff0c;国外已广泛用于环境样品及岩石、矿物、金属等样品中…