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

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

一、题目描述

二、解题思路

(1)首先进行边界处理,如果数组为空,则返回空数组;

(2)变量mul用于计算除0以外所有数的乘积,count_zero用于记录数组中0的个数;

(3)填充ret向量:

如果nums[i]==0:

<1>count_zero==1,表示这个0为向量中唯一的0,所以ret[i]=mul;

<2>count_zero!=1,表示向量中还有其他的0,所以ret[i]=0;

如果nums[i]!=0:

<1>count_zero==0,表示向量中没有0,所以ret[i]=mul/nums[i];

<2>count_zero!=0,表示向量中有零,所以ret[i]=0;

三、代码实现

时间复杂度:T(n)=O(n)

空间复杂度:S(n)=O(1)

class Solution {
public:vector<int> productExceptSelf(vector<int>& nums) {vector<int> ret(nums.size());//边界处理if(nums.empty()) return {};int count_zero=0;//记录0的个数int mul=1;for(int i=0;i!=nums.size();i++){if(nums[i]!=0) mul*=nums[i];else count_zero++;}for(int i=0;i!=ret.size();i++){if(nums[i]==0){if(count_zero==1) ret[i]=mul;else ret[i]=0;}else if(nums[i]!=0){if(count_zero==0) ret[i]=mul/nums[i];else ret[i]=0;}}return ret;}
};

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

相关文章:

  • 可信医疗大数据来源、院内数据、病种数据及编程使用方案分析
  • iOS18报错:View was already initialized
  • 生产ES环境如何申请指定索引模式下的数据查看权限账号
  • 【C语言】一些常见概念
  • git开发基础流程
  • 以结构/序列/功能之间的关系重新定义蛋白质语言模型的分类:李明辰博士详解蛋白质语言模型
  • 设计模式4-建造者模式
  • k8s笔记02概述
  • 网络编程--TCP/UDP Socket套接字
  • SciPy科学计算与应用:SciPy插值技术入门-线性与样条插值
  • MySQL 行转列与列转行的实现方式
  • 堆栈面试题之有效的括号
  • 顶升机设计cad+三维图+设计说明书
  • AR智能巡检:重塑消防行业新未来
  • 【Axure高保真原型】嵌套表格_查看附件
  • AR智能巡检:智慧工地的高效安全新引擎
  • zookeeper-znode解析
  • 【P2P】P2P主要技术及RELAY服务实现
  • 前端 Promise 全面深入解析
  • Unity中的特殊文件夹
  • 【Python】在 Pydantic 模型中使用非 Pydantic 定义的类作为模型字段类型
  • Java项目-苍穹外卖_Day2
  • 8 设计URL短链
  • rust语言 (1.88) egui (0.32.1) 学习笔记(逐行注释)(二十) 文件、文件夹选择框、保存文件框
  • qt配置ros2环境,简单版本
  • Rust:变量、常量与数据类型
  • 2025 突出的时序模型
  • 【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day13
  • Linux-Redis的安装
  • 第四章:并发编程的基石与高级模式之Select语句与多路复用