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

news/2024/7/5 1:43:14

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://lihuaxi.xjx100.cn/news/1571478.html

相关文章

【算法小课堂】滑动窗口

滑动窗口 基本概念&#xff1a; 滑动窗口本质是双指针算法的一种演变 本质上就是同向双指针&#xff0c;窗口的范围就是[left,right&#xff09; 滑动窗口大致可以分为两类 窗口大小不变的窗口大小变化的 滑动窗口遇到一些验证重复性的问题的时候可以用哈希表来优化 核心思想…

​全球人类读书会《乡村振兴战略下传统村落文化旅游设计》中国建筑出版传媒许少辉博士著作

​全球人类读书会《乡村振兴战略下传统村落文化旅游设计》中国建筑出版传媒许少辉博士著作

接口自动化测试数据驱动DDT模块使用

【软件测试面试突击班】如何逼自己一周刷完软件测试八股文教程&#xff0c;刷完面试就稳了&#xff0c;你也可以当高薪软件测试工程师&#xff08;自动化测试&#xff09; 一、DDT简单介绍 名称&#xff1a; Data-Driven Tests&#xff0c;数据驱动测试 作用&#xff1a; 由外部…

SpringMvc-HttpMessageConverter接口

虽然本文命题是HttpMessageConverter&#xff0c;但是常用的场景是修改字段值&#xff0c;如果不是&#xff0c;那你自定义Converter是为了什么&#xff1f;&#xff1f;&#xff1f; HttpMessageConverter是也是数据绑定接口&#xff0c;它负责实现HandlerMethodArgumentReso…

完成“重大项目”引进签约,美创科技正式落户中国(南京)软件谷

近日&#xff0c;美创科技正式入驻中国&#xff08;南京&#xff09;软件谷&#xff0c;并受邀出席中国南京“金洽会"之“雨花台区数字经济创新发展大会”。美创科技副总裁罗亮亮作为代表&#xff0c;在活动现场完成“重大项目”引进签约。 作为国家重要的软件产业与信息服…

JackJson多态

JsonTypeInfo 处理多态、序列化对象类型_赵丙双的博客-CSDN博客 JsonTypeInfo实现jackson的多态解析_MonkeyKing_sunyuhua的博客-CSDN博客 Java Jackson JsonTypeInfo 多态类型处理 - 简书 JsonTypeInfo 逻辑名称 JsonSubTypes、JsonTypeName_赵丙双的博客-CSDN博客

IoT 设备物联网通信中 NB-IoT、Cat.1、Cat.M 如何选型?

本篇文章介绍了物联网通信中涉及的NB-IoT、LTE-Cat.1 和 LTE-M &#xff0c;三种通信技术的各自优势&#xff0c;以及应用场景。 01 什么是 NB-IoT NB-IoT窄带物联网(Narrow Band Internet of Things)是 IoT 领域一个新兴的技术&#xff0c;支持低功耗设备在广域网的蜂窝数据连…

图像练习-计算平行线距离opencv(03)

原图 //对输入图像进行细化 cv::Mat ThinLine(const cv::Mat& matsrc, const int& iterations) {//CvSize size cvGetSize(src);cv::Mat dst matsrc.clone();//拷贝一个数组给另一个数组int _iwidth dst.cols;int _iheight dst.rows;int n 0, i 0, j 0;for (n …