【LeetCode刷题】前缀和解决问题:742.寻找数组的中心下标、238.除自身以外数组的乘积

【LeetCode刷题】Day 15

  • 题目1:742.寻找数组的中心下标
    • 思路分析:
    • 思路1:前缀和思想
  • 题目2:238.除自身以外数组的乘积
    • 思路分析
    • 思路1:前缀和思想

在这里插入图片描述

题目1:742.寻找数组的中心下标

在这里插入图片描述

思路分析:

其实题干说的很明白了,就是在表述,某个位置的前半部分数组和与后半部分数组和的结果相同,就是中心下标。
这里明显就是前缀和来求解。

思路1:前缀和思想

前半部分的和与后半部分的和分别用:前缀和f数组,后缀和g数组来表示。
前缀和f:f[i]表示:从数组开始位置到下标为i前一个位置[0,i-1]的总和
后缀和g:g[i]表示:数组最后一个位置到下标为i位置的后一个位置[i+1,n-1]的总和

f,g数组的递推公式如下:

//前缀和数组f的递推公式:
f[i] = f[i-1] + nums[i-1];
//后缀和数组g的递推公式:
g[i] = g[i+1] + nums[i+1];

注意细节问题:

  • 初始化:前缀和f: 当i=0时,也就是0的前面的和,我们需要设置为0,即f[0]=0。同理,后缀和g: i=n-1时,表示数组中最后一个元素后的和,也同样设置为0,即g[n-1]=0
  • 越界问题:f数组:i从1开始建立,这样才能保证i-1不越界。g数组:i从n-2开始才不会越界。

代码实现:

class Solution {
public:int pivotIndex(vector<int>& nums) {int n=nums.size();vector<int> f(n),g(n); //此处已经把f[0]和g[n-1]默认初始化为0了。//1.预处理前缀和数组f,后缀和数组g。for(int i=1;i<n;i++) f[i]=f[i-1]+nums[i-1];for(int i=n-2;i>=0;i--)g[i]=g[i+1]+nums[i+1];//2.使用前缀和数组和后缀和数组。for(int i=0;i<n;i++)if(f[i]==g[i]) return i;return -1;}
};

LeetCode链接:742.寻找数组的中心下标


题目2:238.除自身以外数组的乘积

在这里插入图片描述

思路分析

思路其实题目已经说的很明显了,唯一要注意的是初始化化,这里是乘法,所以初始值为1。

思路1:前缀和思想

所得的最后数组地每一个位置元素是由,该元素前面区间的乘积来和后面区间的乘积相乘的出来的。所以前缀和思想很合适。
代码实现:

class Solution {
public:vector<int> productExceptSelf(vector<int>& nums) {int n=nums.size();vector<int> ret(n);vector<int> f(n,1),g(n,1);  //1.预处理前缀和后缀数组for(int i=1;i<n;i++)f[i]=f[i-1]*nums[i-1];for(int i=n-2;i>=0;i--)g[i]=g[i+1]*nums[i+1];//2.使用前缀和后缀数组for(int i=0;i<n;i++)ret[i]=f[i]*g[i];return ret;}   
};

LeetCode链接:238.除自身以外数组的乘积


✨享受平静,也努力向上!
平静是幸福,努力学习也是幸福! ~天天开心🎈

请添加图片描述

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

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

相关文章

创建pdb

1、从seed创建一个pdb CREATE PLUGGABLE DATABASE pdb1 ADMIN USER salesadm IDENTIFIED BY SALESADMSTORAGE (MAXSIZE 2G MAX_SHARED_TEMP_SIZE 100M)DEFAULT TABLESPACE users DATAFILE /u02/app/oracle/oradata/cuugnew/PDB1/users01.dbf SIZE 20M AUTOEXTEND ONFILE_NAME…

【软件开发规范篇】前言

作者介绍&#xff1a;本人笔名姑苏老陈&#xff0c;从事JAVA开发工作十多年了&#xff0c;带过大学刚毕业的实习生&#xff0c;也带过技术团队。最近有个朋友的表弟&#xff0c;马上要大学毕业了&#xff0c;想从事JAVA开发工作&#xff0c;但不知道从何处入手。于是&#xff0…

Linux——多线程(三)

在上一篇博客中我们讲到了在加锁过程中&#xff0c;线程竞争锁是自由竞争的&#xff0c;竞争能力强的线程会导致其他线程抢不到锁&#xff0c;访问不了临界资源导致其他线程一直阻塞&#xff0c;造成其它线程的饥饿问题&#xff0c;想要解决此问题又涉及一个新概念线程同步 一…

18 EEPROM读写

EEPROM 简介 EEPROM (Electrically Erasable Progammable Read Only Memory&#xff0c;E2PROM)即电可擦除可编程只读存储器&#xff0c;是一种常用的非易失性存储器&#xff08;掉电数据不丢失&#xff09;&#xff0c;EEPROM 有多种类型的产品&#xff0c;此次实验使用的是A…

32位与64位程序下函数调用的异同——计科学习中缺失的内容

前言 今天&#xff0c;通过一个有趣的案例&#xff0c;从反编译的角度看一下C语言中函数参数是如何传递的。 创建main.c文件&#xff0c;将下面实验代码拷贝到main.c文件中。 # main.c #include <stdio.h>int test(int a, int b, int c, int d, int e, int f, int g, …

Docker最新超详细版教程通俗易懂

文章目录 一、Docker 概述1. Docker 为什么出现2. Docker 的历史3. Docker 能做什么 二、Docker 安装1. Docker 的基本组成2. 安装 Docker3. 阿里云镜像加速4. 回顾 hello-world 流程5. 底层原理 三、Docker 的常用命令1. 帮助命令2. 镜像命令dokcer imagesdocker searchdocker…

解锁数据宝藏:高效查找算法揭秘

代码下载链接&#xff1a;https://gitee.com/flying-wolf-loves-learning/data-structure.git 目录 一、查找的原理 1.1 查找概念 1.2 查找方法 1.3平均查找长度 1.4顺序表的查找 1.5 顺序表的查找算法及分析 1.6 折半查找算法及分析 1.7 分块查找算法及分析 1.8 总结…

pytorch学习笔记5

transform 本质上作用是将图片通过transform这个这个工具箱获取想要的结果 tensor就是一个包含神经网络需要的一些理论基础的参数 from torch.utils.tensorboard import SummaryWriter from torchvision import transforms from PIL import Image #tensor数据类型 #通过tra…

渗透测试之Web安全系列教程(一)

今天&#xff0c;我们来讲一下Web安全&#xff01; 本文章仅提供学习&#xff0c;切勿将其用于不法手段&#xff01; 目前&#xff0c;在渗透测试领域&#xff0c;主要分为了两个发展方向&#xff0c;分别为Web攻防领域和PWN&#xff08;二进制安全&#xff09;攻防领域。Web…

1985-2020 年阿拉斯加和育空地区按植物功能类型划分的模型表层覆盖率

ABoVE: Modeled Top Cover by Plant Functional Type over Alaska and Yukon, 1985-2020 1985-2020 年阿拉斯加和育空地区按植物功能类型划分的模型表层覆盖率 简介 文件修订日期&#xff1a;2022-05-31 数据集版本: 1.1 本数据集包含阿拉斯加和育空地区北极和北方地区按…

DPDK基础组件二(igb_uio、kni、rcu)

The Linux driver implementer’s API guide — The Linux Kernel documentation 一、igb_uid驱动 参考博客:https://zhuanlan.zhihu.com/p/543217445 UIO(Userspace I/O)是运行在用户空间的I/O技术 代码位置:dpdk----/kernel/linux/igb_uio目录 igb_uio 是 dpdk 内部实…

学习数据分析思维的共鸣

在这篇文章中&#xff0c;我将分享自己在成长过程中对数据分析思维的领悟&#xff0c;从《数据分析思维-产品经理的成长笔记》这本书引发的共鸣&#xff0c;到数据分析在不同岗位的广泛应用&#xff0c;再到如何将学习与快乐联系起来&#xff0c;以及沟通在数据分析中的重要性。…

cocos入门4:项目目录结构

Cocos Creator 项目结构教程 Cocos Creator 是一个功能强大的游戏开发工具&#xff0c;它为开发者提供了直观易用的界面和强大的功能来快速创建游戏。在使用 Cocos Creator 开发游戏时&#xff0c;合理地组织项目结构对于项目的可维护性和扩展性至关重要。以下是一个关于如何设…

设计模式(十)结构型模式---享元模式(flyweight)

文章目录 享元模式简介结构UML图具体实现UML图代码实现 享元模式简介 享元模式&#xff08;fly weight pattern&#xff09;主要是通过共享对象来减少系统中对象的数量&#xff0c;其本质就是缓存共享对象&#xff0c;降低内存消耗。享元模式将需要重复使用的对象分为两个状态…

7-14 字节序(Endianness)---PTA实验C++

一、题目描述 “内存寻址的最小单位是字节”——明白。 “每个字节有唯一的编号&#xff0c;称为地址”——明白。 “C中int通常为四个字节”——了解。 “int x 1;最低字节是1还是0&#xff1f;——纳尼&#xff1f; 事实上&#xff0c;这里有点小小分歧&#xff1a; 多字…

JavaScript移除事件的方法

JavaScript移除事件的方法有两种&#xff0c;分别是removeEventListener和οnclicknull。 使用removeEventListener方法&#xff1a; removeEventListener方法用于从元素中移除之前添加的事件监听器。它需要传入三个参数&#xff1a;事件类型、事件处理函数和一个可选的布尔值…

IDEA 学习之 命令行太长问题

现象 Error running App Command line is too long. In order to reduce its length classpath file can be used. Would you like to enable classpath file mode for all run configurations of your project?解决办法 办法一 .idea\workspace.xml ——> <compone…

软件开发整体介绍

黑马程序员瑞吉外卖 文章目录 一、软件开发流程二、角色分工三、软件环境 一、软件开发流程 二、角色分工 三、软件环境

【探索微软 Edge:现代化的网页浏览体验】

探索微软 Edge&#xff1a;现代化的网页浏览体验 微软 Edge 是一款现代化的网页浏览器&#xff0c;它由微软开发并推出&#xff0c;旨在提供更快速、更安全、更现代化的网页浏览体验。Edge 浏览器基于 Chromium 开源项目&#xff0c;这使得它拥有与 Google Chrome 类似的性能和…

13.FreeRTOS使用事件标记组

FreeRTOS 事件标记组 什么是事件标记组&#xff1f; 事件标记组是一个24&#xff08;在 FreeRTOS 中&#xff0c;默认情况下&#xff0c;事件标记组的位数是 24 位&#xff09;位的变量&#xff0c;每一位&#xff08;bit&#xff09;可以独立地被设置或清除。任务可以等待一…