Leetcode Hot 100刷题记录 -Day13(除自身以外数组的乘积)

news2024/9/19 9:18:32

除自身以外数组的乘积

问题描述:

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

思路分析:

238. 除自身以外数组的乘积 - 力扣(LeetCode)icon-default.png?t=O83Ahttps://leetcode.cn/problems/product-of-array-except-self/solutions/272369/chu-zi-shen-yi-wai-shu-zu-de-cheng-ji-by-leetcode-/?envType=study-plan-v2&envId=top-100-liked

//提交版
class Solution {
    public int[] productExceptSelf(int[] nums) {
         int n = nums.length;
        int[] L = new int[n];
        int[] R = new int[n];
        int[] answer = new int[n];
        L[0] = 1;
        R[n-1] = 1;
        for (int i = 1; i < n;i++){
            L[i] = L[i - 1] * nums[i - 1];
        }
        for (int j=n-2 ; j >= 0;j--){
            R[j] = R[j+1] * nums[j+1];
        }
        for (int i =0;i<n;i++){
            answer[i] = L[i] * R[i];
        }
        return answer;
    }
}


//带有输入输出版
import java.util.Arrays;

public class hot_14productExceptSelf {
    public int[] productExceptSelf(int[] nums){
        int n = nums.length;
        int[] L = new int[n];
        int[] R = new int[n];
        int[] answer = new int[n];
        L[0] = 1;
        R[n-1] = 1;
        for (int i = 1; i < n;i++){
            L[i] = L[i - 1] * nums[i - 1];
        }
        //注意边界线的判断
        // 在这里新数组R[0]应该存储值,所以需要能取到0
        for (int j=n-2 ; j >= 0;j--){
            R[j] = R[j+1] * nums[j+1];
        }
        for (int i =0;i<n;i++){
            answer[i] = L[i] * R[i];
        }
        return answer;
    }
    public static void main(String[] args){
        int[] nums = {1,2,3,4};
        System.out.println("输入:nums = " + Arrays.toString(nums));
        hot_14productExceptSelf hot14productExceptSelf = new hot_14productExceptSelf();
        int[] result = hot14productExceptSelf.productExceptSelf(nums);
        System.out.println("输出 = " + Arrays.toString(result));
    }
}

知识点总结:

  • 注意边界线的判断,R[0]应该能被取到

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

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

相关文章

[云服务器9]使用django搭建论坛网站?

准备 首先&#xff0c;我们打开雨云官网。 然后我们注册一个账号&#xff0c;注册并登录好后&#xff0c;我们找到主面版的云服务器&#xff0c;然后点击购买云服务器。 配置我们2h2g就足够了&#xff0c;因为我们的流量不是那么大……操作系统推荐选Ubuntu&#xff0c;预装选…

【C++二分查找】2560. 打家劫舍 IV

本文涉及的基础知识点 C二分查找 LeetCode2560. 打家劫舍 IV 沿街有一排连续的房屋。每间房屋内都藏有一定的现金。现在有一位小偷计划从这些房屋中窃取现金。 由于相邻的房屋装有相互连通的防盗系统&#xff0c;所以小偷 不会窃取相邻的房屋 。 小偷的 窃取能力 定义为他在…

荣耀时刻|Anzo Capital 闪耀2024国际金融产业博览会

【2024年9月5日-6日&#xff0c;中国香港】由数汇金融和汇友网主办的2024年国际金融产业博览会香港峰会在香港康得思酒店举行&#xff0c;Anzo Capital 昂首资本作为顶级赞助商和重磅受邀嘉宾出席了本次展会。 此次展会汇聚了众多行业领军企业、知名专家以及投资机构&#xff…

【趣学Python算法100例】抓交通肇事犯

问题描述 一辆卡车违反交通规则&#xff0c;撞人后逃跑。现场有三人目击该事件&#xff0c;但都没有记住车号&#xff0c;只记下了车号的一些特征。甲说&#xff1a;牌照的前两位数字是相同的&#xff1b;乙说&#xff1a;牌照的后两位数字是相同的&#xff0c;但与前两位不同…

Linux - make/Makefile工具的基础使用

文章目录 一、介绍二、工作原理三、使用1、make的使用2、make的常用选项3、Makefile文件 四、总结 一、介绍 make工具和 Makefile 文件是 Linux下非常重要的自动化构建工具&#xff0c; Makefile定义了项目的编译规则&#xff0c;指示make如何编译和链接源代码以生成可执行文件…

[wowoza]使用rtsp协议向wowza推流方法

1、测试前要关闭电脑防火墙 2、测试前要关闭推流验证功能 3、3、关闭回放验证功能 上面设置修改后&#xff0c;要点击restart重启 4、查看服务器ip、端口号、application test player可以预览推流的音视频 有时候需要缓存 url里面注意没有空格

牛客练习赛128(上)

Cidoai的幂次序列 题目描述 登录—专业IT笔试面试备考平台_牛客网 运行代码 #include <bits/stdc.h> using namespace std; signed main(){long long n,k;cin>>n>>k;cout<<2<<\n;cout<<n-1<< <<1<<\n;return 0; } 代…

D - 1D Country(AtCoder Beginner Contest 371)

题目链接: D - 1D Country (atcoder.jp) 题目描述: 数据范围: 输入输出: 题目分析: 典型的l, r 区间问题&#xff0c;即是前缀和问题&#xff0c;但是注意到数据范围, 数据范围1e-9 到 1e9 数据范围&#xff0c;要是从最小到最大直接for循环去模拟的话&#xff0c;时间复杂度…

CMake构建学习笔记16-使用VS进行CMake项目的开发

文章目录 1. 概论2. 详论2.1 创建工程2.2 加载工程2.3 配置文件2.4 工程配置2.5 调试执行 3. 项目案例4. 总结 1. 概论 在之前的系列博文中&#xff0c;我们学习了如何构建第三方的依赖库&#xff0c;也学习了如何去组建自己的CMake项目&#xff0c;尤其是学习了CMake的核心配…

分享六款小众宝藏软件,建议收藏!

分享6款小众却实用的宝藏电脑软件&#xff0c;个个都有独特的作用&#xff0c;可以提高效率、提升体验感&#xff01; 1.Clover 一个超轻量级的文件夹管理工具&#xff0c;跟 Windows 资源管理器差不多。但用 Clover 感觉就像用 Chrome 来整理文件似的。 它最棒的功能就是能像…

【python计算机视觉编程——10.OpenCV】

python计算机视觉编程——10.OpenCV 10.OpenCV10.2 OpenCV基础知识10.2.1 读取和写入图像10.2.2 颜色空间10.2.3 显示图像及结果 10.3 处理视频10.3.1 视频输入10.3.2 将视频读取到NumPy数组中 10.4 跟踪10.4.1 光流10.4.2 Lucas-Kanade算法使用跟踪器使用发生器 10.5 更多示例…

计算架构模式之负载均衡技巧

通用负载均衡算法 负载均衡算法 -轮询 & 随机 如果服务器挂掉了&#xff0c;那么负载均衡器还是可以感知到的&#xff0c;因为连接已经断掉了。 负载均衡算法-加权轮询 假设你有4核的和8核的&#xff0c;由于你的程序没有办法跑完CPU&#xff0c;那么有可能出现4核的和8核…

xmake vscode+clangd实现c/c++程序更精确跳转、补全

clangd相比与vscode自带的c/c插件要好用很多&#xff0c;使用xmake搭配vscode开发c/c程序时&#xff0c;可以通过下面方法使用clangd。 生成compile_commands.json 好像是叫什么compile database&#xff0c;xmake可以使用下面两种方式生成。 1、手动生成 xmake project -k…

[linux基础知识]教你使用vim和ctags阅读linux内核源码

1 安装ctags apt install ctags 2 内核源码目录下添加索引 使用下面命令&#xff0c;添加索引成功后&#xff0c;内核目录下会生成tags 索引文件。 ctags -R 3 vim使用索引阅读源码 跳转到函数变量定义与返回 #跳到函数或者变量定义 Ctrl] #返回 Ctrlo 光标移动到需要…

九九乘法表-for-python

for i in range(1, 10):for j in range(1, i):print(f"{j}*{i}{i*j}\t", end )print()运行结果截图&#xff1a;

Linux 离线安装 Docker

一、安装 docker 1. 下载 Docker 安装包 https://download.docker.com/linux/static/stable/x86_64/ 2. 解压安装包 tar -xvf docker-27.1.0.tgz mv docker/* /usr/bin/3. 将 docker 注册为 service 服务 vim /etc/systemd/system/docker.servicedocker.service [Unit] Des…

学习笔记 韩顺平 零基础30天学会Java(2024.9.14)

P547 Collections工具类2 P554 泛型引入 P555 泛型入门 ArrayList<Dog>arrayList new ArrayList<Dog>()//在这里可以理解为这个arrayList里面只能放Dog类型&#xff0c;就是限制了类型 P556 泛型说明 泛型就是可以代指一类数据类型&#xff0c;可以是Integer也可以…

哪个虚拟机软件在 Mac 上更好用,Mac 虚拟机会影响性能吗?

虚拟机如今已经成为许多用户工作生活不可缺少的工具之一&#xff0c;尤其是对于需要经常切换使用不同系统的用户来说&#xff0c;虚拟机提供了一个便捷而有效的操作平台&#xff0c;解决用户跨系统工作的问题。然而&#xff0c;当我们考虑在Mac上下载运行虚拟机时&#xff0c;会…

艾体宝洞察丨一文读懂最新密码存储方法,揭秘密码存储常见误区!

在信息安全的诸多领域之中&#xff0c;密码的安全存储无疑已然成为最为核心的问题之一。随着攻击技术的不断演进&#xff0c;传统的密码存储方法已无法抵御现代复杂的威胁。更为安全、健壮的密码存储机制也成为当代信息安全从业者的关注点。本篇文章将引入并介绍密码存储中的基…

交叉编译工具链的安装及带wiringPi库的交叉编译实现

交叉编译工具链的安装及带wiringPi库的交叉编译实现 交叉编译的概念交叉编译工具链的安装下载交叉编译工具链配置环境遍变量编译程序到ARM平台 带wiringPi库的交叉编译下载编译wiringPi库调用树莓派的wringPi库 交叉编译的概念 交叉编译是在一个平台上生成另一个平台上的可执行…