【LeetCode热题100】--238.除自身以外数组的乘积

news2024/11/23 16:35:39

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

image-20230925101002940

思路:

利用索引左侧所有数字的乘积和右侧所有数字的乘积(即前缀和后缀)相乘得到答案

算法:

1.初始化两个空数组L和R,对于给定索引i,L[i]代表的是i左侧所有数字的乘积,R[i]代表的是i右侧所有数字的乘积

2.需要用两个循环来填充L和R数组的值,对于数组L,L[0]应该是1,因为第一个元素的左边没有元素,对于其他元素: L [ i ] = L [ i − 1 ] ∗ n u m s [ i − 1 ] L[i] = L[i-1] * nums[i-1] L[i]=L[i1]nums[i1],同样,对于R,R[length-1]=1,其他元素: R [ i ] = R [ i + 1 ] ∗ n u m s [ i + 1 ] R[i] = R[i+1] * nums[i+1] R[i]=R[i+1]nums[i+1]

3.当R和L数组填充完成,只需要在输入数组上迭代,索引i处的值为 L [ i ] ∗ R [ i ] L[i]*R[i] L[i]R[i]

class Solution {
    public int[] productExceptSelf(int[] nums) {
        int n = nums.length;

        //L和R分别表示左右两侧的乘积列表
        int[] L = new int[n];
        int[] R = new int[n];

        int[] ans = new int[n];

        //L[i]为索引i左侧所有元素的乘积
        //对于索引为0的元素,左侧没有元素,所以L[0]=1
        L[0] = 1;
        for(int i =1;i<n;i++){
            L[i] = nums[i - 1] * L[i-1];
        }
        //R[i]为索引i右侧所有元素的乘积
        R[n - 1] = 1;
        for(int i = n-2;i>=0;i--){
            R[i] = nums[i + 1] * R[i + 1];
        }
        for(int i = 0;i<n;i++){
            ans[i] = L[i] * R[i];
        }
        return ans;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1041639.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于springboot会员制医疗预约服务管理信息系统springboot017

大家好✌&#xff01;我是CZ淡陌。一名专注以理论为基础实战为主的技术博主&#xff0c;将再这里为大家分享优质的实战项目&#xff0c;本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路…

2023最新PS(photoshop)Win+Mac免费下载安装包及教程内置AI绘画-网盘下载

2023最新PS(photoshop)WinMac免费下载安装包及教程内置AI绘画-网盘下载 2023最新PS(photoshop)免费下载安装教程来咯&#xff5e; 「PhotoShop」全套&#xff0c;winmac&#xff1a; https://pan.quark.cn/s/9d8d8ef5c400#/list/share 所有版本都有 1&#xff0c;复制链接…

高并发下双重检测锁DCL指令重排问题剖析

文章目录 一、引言1.1 双重检查锁定&#xff08;Double-Checked Locking&#xff0c;简称DCL&#xff09;定义介绍1.2 高并发环境下DCL的应用和优势 二、DCL存在的问题2.1 DCL的代码示例2.2 指令重排的定义和工作原理2.3 指令重排导致DCL失效的情况分析 三、深入分析指令重排和…

「大数据-2.1」HDFS集群启停命令

目录 一、HDFS集群一键启停脚本 1. HDFS集群的一键启动脚本 2. HDFS集群的一键关闭脚本 二、单进程启停 1. hadoop-daemon.sh脚本 2. hdfs脚本 三、总结 1. 一键启停脚本 2. 独立进程启停 一、HDFS集群一键启停脚本 Hadoop HDFS组件内置了HDFS集群的一键启停脚本。 1. HDFS集群…

JavaScript 期约 Promise 总结

同步与异步的概念 JavaScript 是一门单线程的语言&#xff0c;这意味着它在任何给定的时间只能执行一个任务。 然而&#xff0c;JavaScript 通过异步编程技术来处理并发操作&#xff0c;以避免阻塞主线程的情况。 在上图中&#xff0c;同步行为的进程 A 因为等待进程 B 执行完…

深入浅出Java的多线程编程——第一篇

目录 1. 认识线程&#xff08;Thread&#xff09; 1.1 概念 1.1.1 线程是什么 1.1.2 为啥需要线程 1.1.3 进程和线程的区别 1.1.4 Java的线程和操作系统线程的关系 1.2 第一个多线程程序 1.3 创建线程的方式&#xff08;5种&#xff09; 1.3.1 继承Thread类 1.3.2 实现…

电脑开机慢问题的简单处理

电脑用久了&#xff0c;开机时间要10-20分钟特别慢&#xff0c;一下介绍两种简单有效处理方式&#xff0c;这两种方式经测试不会影响原系统软件的使用&#xff1a; 方式一&#xff1a;禁用非必要启动项【效果不是很明显】 利用360里面的优化加速禁用启动项【禁用启动项还有其…

红色模板和黑色模板的区别

红色建筑模板和黑色建筑模板是常见的建筑支模材料&#xff0c;它们在颜色、材料、性能和适用范围等方面存在显著的区别。下面将详细介绍这两种建筑模板的区别。 首先&#xff0c;红色建筑模板通常由胶合板或其他木材制成&#xff0c;外观呈红色&#xff0c;而黑色建筑模板则采用…

MySQL数据库入门到精通6--进阶篇(锁)

5. 锁 5.1 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中&#xff0c;除传统的计算资源&#xff08;CPU、RAM、I/O&#xff09;的争用以外&#xff0c;数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决…

沐风老师3DMAX刀剑轨迹拖尾插件SwordTrails使用方法详解

3DMAX刀剑轨迹拖尾插件SwordTrails使用教程 SwordTrail刀剑轨迹拖尾插件&#xff0c;是一款简单的运动轨迹特效工具。 【适用版本】 3dmax2011-2023&#xff08;不仅于此范围&#xff09; 【安装方法】 该插件无需安装&#xff0c;使用时直接拖动插件脚本文件到3dmax视口中打…

联机手写汉字识别系统技术要求与测试规程

声明 本文是学习GB-T 18790-2010 联机手写汉字识别系统技术要求与测试规程. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了联机手写汉字识别系统的技术要求和测试规程。 本标准适用于微型计算机、手持式信息处理设备等数字化设…

功能定义-后方碰撞预警

功能概述 后方碰撞预警(Rear Collision Warning)&#xff0c;简称RCW&#xff0c;其功能表现为实时监测车辆后方环境&#xff0c;并在可能受到后方碰撞危险时发出警告信息 报警区域 其中&#xff1a; L&#xff1a;表示后方盲区&#xff0c;受布置及传感器FOV影响 W&#xff1…

Java实现byte数组与Hex互转

十六进制字符的输出大写字符&#xff1a;0123456789ABCDEF 十六进制字符的输出小写字符&#xff1a;0123456789abcdef下面使用十六进制大写字符。 1、方式1 public class HexStringUtils {private static final char[] HEX_CHAR_TABLE {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B,…

00-MySQL数据库的使用-上

一 数据库基础知识 先谈发音 MySQL如何发音&#xff1f;在国内MySQL发音有很多种&#xff0c;Oracle官方文档说 他们念作 My sequal[si:kwəl]。 数据库基本概念 数据 数据&#xff08;Data&#xff09;是指对客观事物进行描述并可以鉴别的符号&#xff0c;这 些符号是可识别…

一篇文章全面解析Modbus协议中的消息帧

在 Modbus网络通信的两种传输模式中&#xff08; ASCII或RTU&#xff09;&#xff0c;传输设备以将Modbus消息转为有起点和终点的帧&#xff0c;这就允许接收的设备在消息起始处开始工作&#xff0c;读地址分配信息&#xff0c;判断哪一个设备被选中&#xff08;广播方式则传给…

MySQL 基础

本系列文章为【狂神说 Java 】视频的课堂笔记&#xff0c;若有需要可配套视频学习。 1. 简介 数据库&#xff08;DB&#xff0c;Database&#xff09;是安装在操作系统上的存储数据的软件。 关系型数据库&#xff08;RDB&#xff09;以行列形式存储数据。 非关系型数据库&am…

如何访问TDH中Inceptor 底层的元数据库TxSQL

如何访问TDH中Inceptor 底层的元数据库TxSQL 1 Inceptor概述 在大数据生态系统中&#xff0c;HIVE是离线数据仓库事实上的标准&#xff0c;绝大多数的大数据分析型系统或数据仓库系统&#xff0c;都是基于HIVE来构建的。 在星环的大数据平台TDH中&#xff0c;在功能上对应开…

PWN环境搭建

虚拟机Ubuntu安装 工具&#xff1a;Vmware 16 以及 Ubuntu 18或20 来源&#xff1a;清华大学开源软件镜像站 | Tsinghua Open Source Mirror 虚拟机安装流程 安装很简单&#xff0c;按照提示一步步来即可 处理器可以多给一些&#xff0c;我给了8个&#xff0c;内核数量不…

CCS介绍

CCS介绍 设置主体颜色 修改字体的颜色和大小 安装一些插件 CCS中的App中心 切换工作空间 导入工程

CarbonData详细解析

一、CarbonData简介 CarbonData是一种新型的Apache Hadoop本地文件格式&#xff0c;使用先进的列式存储、索引、压缩和编码技术&#xff0c;以提高计算效率&#xff0c;有助于加速超过PB数量级的数据查询&#xff0c;可用于更快的交互查询。同时&#xff0c;CarbonData也是一种…