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

238除自身以外数组的乘积

题目链接:

https://leetcode.cn/problems/product-of-array-except-self/description/解法一:暴力解法

直接遍历一遍数组,求该数组的除该数之外的乘积,但是超时时间复杂度为n方。

    vector<int> productExceptSelf(vector<int>& nums) {//遍历数组,求i下标之前的积,求i下标之后的积vector<int>arr;for (int i = 0; i < nums.size() ; i++){int ji = 1;for (int j = 0; j < nums.size() ; j++){if (j != i){ji = ji * nums[j];}}arr.push_back(ji);}return arr;}

所以我们开始优化,前缀和可以试一下,创建arr1数组先求前缀之积,第一位特殊处理为1,

创建arr2数组求后缀之积,最后一位特殊处理。

有了前缀之积和后缀之积,进行遍历

ans[i]=arr1[i]*arr2[i];求出答案请看代码

            //先求前缀积,再求后缀积,最后相乘vector<int>arr1(nums.size());vector<int>arr2(nums.size());//特殊处理arr1的第一位和arr2的最后一位、arr2[nums.size() - 1] = 1;arr1[0] = 1;//前缀积for (int i = 1; i < nums.size(); i++){arr1[i] = arr1[i - 1] * nums[i - 1];}//后缀积for (int i = nums.size() - 2; i >= 0; i--){arr2[i] = arr2[i + 1] * nums[i + 1];}vector<int>ans;for (int i = 0; i < nums.size(); i++){ans.push_back(arr1[i] * arr2[i]);}

http://www.dtcms.com/a/225543.html

相关文章:

  • Go 语言 select 语句详解
  • 【STM32开发板】接口部分
  • Oracle正则表达式学习
  • LeetCode 39.组合总和:回溯法与剪枝优化的完美结合
  • Go语言常见接口设计技巧-《Go语言实战指南》
  • 题单:最大公约数(辗转相除法)
  • 数据结构之ArrayList
  • 【C/C++】面试基础题目收集
  • 基于 Three.js 的文本粒子解体效果技术原理剖析
  • 解释程序(Python)不需要生成机器码 逐行解析 逐行执行
  • java27
  • Maven概述,搭建,使用
  • 第五篇:HTTPS 与 TLS/SSL 握手原理
  • 前端面经 两栏布局
  • 逆向入门(1)
  • DFS每日刷题
  • Mac电脑上本地安装 redis并配置开启自启完整流程
  • pikachu通关教程-CSRF
  • 使用langchain实现五种分块策略:语义分块、父文档分块、递归分块、特殊格式、固定长度分块
  • 【论文阅读 | PR 2024 |ICAFusion:迭代交叉注意力引导的多光谱目标检测特征融合】
  • 一天搞懂深度学习--李宏毅教程笔记
  • 财管8-企业价值评估
  • 【位运算】两整数之和(medium)
  • 过滤攻击-聚合数据
  • Spring Boot 全局配置文件优先级
  • “人单酬“理念:财税行业的自我驱动革命
  • CCPC dongbei 2025 F
  • 神经网络-Day42
  • 针对 Harmony-Cordova 性能优化,涵盖原生插件开发、线程管理和资源加载等关键场景
  • Codeforces Round 1028 (Div. 2)(ABC)