蓝桥杯基本算法~~~一维/二维前缀和问题

文章目录

  • 1.一维前缀和
  • 2.二维前缀和
  • 3.移动零问题
  • 4.颜色的分类问题

1.一维前缀和

问题说明:一维就是表示的是一维数组的计算,我们的这个一维前缀和是基于这个一维数组进行计算的;

什么是前缀和:就是10 20 30 40 50这个数组,13前缀和就是1~3之间的元素,这个下标是从1开始的,这个结果就是60;

如果我们的这个计算的是3~5之间的数据之和,这个就是前面的5个的和减去前面的2个的和,这个前缀和就是前面的几个数据之和;

如果不使用前缀和,我们每一次都是需要进行遍历的;

image-20241029090359847

我们的这个前缀和数组就是dp表示的,dp[i]=dp[i-1]+arr[i]这个公式计算的;

我们计算这个left~right之间的数据求和的时候,[l,r]就是这个区间,我们基于这个已经计算出来的数组,使用这个dp[r]-dp[l-1]就是我们想要得到的结果;

image-20241028211405840

下面的这个实现的代码:

public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);//1.进行数据的读入int n=in.nextInt();int q=in.nextInt();int[] arr=new int[n+1];for(int i=1;i<=n;i++){arr[i]=in.nextInt();}//2.计算前缀和数组long[] dp=new long[n+1];for(int i=1;i<=n;i++){dp[i]=dp[i-1]+arr[i];}//3.使用前缀和数组进行计算while(q>0){int l=in.nextInt();int r=in.nextInt();System.out.println(dp[r]-dp[l-1]);q--;}}
}

疑问:为什么这个下标需要从1开始计数;

如果我们从是从0开始计数,这个时候的边界情况是无法进行处理的,因为我们使用前缀和对于这个连续区间的和进行计算的时候,这个是需要使用的是我们的这个dp[r]-dp[l-1],但是如果我们的这个下标是从1开始的,如果用到这个第一个元素,这个时候的写法就是dp[0],虽然我们的这个里面没有第0个元素,但是我们把这个dp[0]=0即可,但是如果我们的这个下标是从0开始的,这个时候的这个dp[-1]就会超出我们的这个范畴,因此使用这个1作为开始下标处理这个一维前缀和二位前缀和问题也是为了更好的处理边界情况

2.二维前缀和

image-20241029081309678

如果上面的这个图示有些不懂,可以看下面的这个,下面的这个图形对于网格画了出来,而且可以更加清晰的看到关键的点对应的坐标,结合下面的这个图可以更好地理解我们上面的公式;

image-20241028215935682

下面的这个就是我们的二位前缀和的代码:

public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);//0.n表示的是我们的这个矩阵的行数,m表示的是我们的这个矩阵的列数,q表示的是我们的计算的组数int n=in.nextInt();int m=in.nextInt();int q=in.nextInt();//1.读入数据,就是我们的h行m列的数组;int[][] arr=new int[n+1][m+1];for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){arr[i][j]=in.nextInt();}}//2.下面的这个就是进行的我们的这个前缀和数组的计算;long[][] dp=new long[n+1][m+1];for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){dp[i][j]=dp[i-1][j]+dp[i][j-1]+arr[i][j]-dp[i-1][j-1];}}//3.根据我们计算的前缀和数组得到这个指定区间的数值;while(q>0){int x1=in.nextInt();int y1=in.nextInt();int x2=in.nextInt();int y2=in.nextInt();System.out.println(dp[x2][y2]-dp[x1-1][y2]-dp[x2][y1-1]+dp[x1-1][y1-1]);q--;}in.close();}
}

其实上面的1,2两个是可以进行合并的,因为他们的这个循环的判断条件之类的就是一样的,因此我们可以把这个循环体进行合并,这个也是没有问题的;

3.移动零问题

image-20241019154955303

这个题目,之前使用C++写过一次,但是觉得这个C++写出来这个代码确实还是比较复杂的,但是这个Java的写完之后,我觉得这个比之前的那个版本更加容易理解;

刚开始的时候我们的这个fast,slow都是执行第一个元素的,然后这个时候我们的fast开始向右边进行遍历,当遇到不是0的元素的时候,把我们的这个slow指向的这个元素替换成为这个元素,然后这个slow++,fast++,追后我们的这个slow指向的元素开始的所有的元素应该都是0了,因为我们所有的不是0的元素都是已经被替换掉得了;

image-20241019155022493

4.颜色的分类问题

Leetcode75题:颜色的分类;

image-20241029085145085

这个 题目主要是要设置两个标志位

image-20241029084557560

当我们的这个cur指向的元素是0的时候,就和left指向的元素进行交换,指向1的时候,不动,指向2的时候,就和我们的right指向的元素进行交换;

其中这个cur是0的时候,我们交换完成之后,这个index和我们的这个left都是需要++的,因为我们的这个时候的left左边的这个元素其实都是0,因此这个时候我们的left是可以移动的;

但是指向1的时候,这个时候的1本来就是应该放到中间的,因此这个时候的index++即可;

指向2的时候,和右边的这个进行交换,这个时候因为交换过来的这个数值的不确定性,因此只让这个right–即可,这个时候的right指向位置右边一定都是2,因此这个right是可以进行–操作的;

应该放到中间的,因此这个时候的index++即可;

指向2的时候,和右边的这个进行交换,这个时候因为交换过来的这个数值的不确定性,因此只让这个right–即可,这个时候的right指向位置右边一定都是2,因此这个right是可以进行–操作的;

image-20241029085107263

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

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

相关文章

ubuntu20.04系统安装

文章目录 前言参考1 一、准备工作1、进入BIOS&#xff0c;设置 UEFI/Legacy Boot选项 为UEFI2、进入BIOS界面将Secure Boot禁用3、USB启动为enable 二、单系统安装1、插入U盘&#xff0c;电脑正常开机后 总结 前言 装了很多次ubuntu系统&#xff0c;整理一篇自己的文章很费时间…

JS | CommonJS、AMD、CMD、ES6-Module、UMD五种JS模块化规范

目录 前言 一、CommonJS 模块化规范 二、ES6 模块化规范 三、AMD 模块化规范 四、CMD 模块化规范 五、UMD模块化规范 前言 这三个规范都是为Js模块化加载而生的&#xff0c;使模块能够按需加载&#xff0c;使系统同庞杂的代码得到组织和管理。模块化的管理代码使多人开发…

【宠物狗狗数据集】 犬类品种识别 宠物狗检测 深度学习 目标检测(含数据集)

一、背景意义 随着人们对宠物狗的喜爱日益增加&#xff0c;犬种的多样性也逐渐受到重视。狗狗不仅是家庭的好伴侣&#xff0c;更在多个领域中发挥着重要作用&#xff0c;如导盲、搜救、疗愈等。因此&#xff0c;准确识别和分类各种犬种显得尤为重要。传统的犬种识别方法往往依赖…

移远通信闪耀2024香港秋灯展,以丰富的Matter产品及方案推动智能家居产业发展

10月27-30日&#xff0c;2024香港国际秋季灯饰展在香港会议展览中心盛大开展。 作为全球领先的物联网整体解决方案供应商&#xff0c;移远通信再次亮相&#xff0c;并重点展示了旗下支持Matter协议以及亚马逊ACK ( Alexa Connect Kit ) SDK for Matter方案的Wi-Fi模组、低功耗蓝…

虚拟机桥接模式连不上,无法进行SSH等远程操作

说明&#xff1a;以下情况在window10上遇到&#xff0c;解决后顺便做了个笔记&#xff0c;以防后续再次用到&#xff0c;也给同道中人提供一个解决方案 一、首先按照以下步骤进行检查 1、是否连接了对应的wifi 2、是否设置了桥接模式 3、上述1、2确认无误的情况下请查看右上…

ApsaraMQ Serverless 能力再升级,事件驱动架构赋能 AI 应用

本文整理于 2024 年云栖大会阿里云智能集团高级技术专家金吉祥&#xff08;牟羽&#xff09;带来的主题演讲《ApsaraMQ Serverless 能力再升级&#xff0c;事件驱动架构赋能 AI 应用》 云消息队列 ApsaraMQ 全系列产品 Serverless 化&#xff0c;支持按量付费、自适应弹性、跨可…

一款专业获取 iOS 设备的 UDID 工具|一键获取iPhone iPad设备的 UDID

什么是UDID&#xff1f; UDID&#xff0c;是iOS设备的一个唯一识别码&#xff0c;每台iOS设备都有一个独一无二的编码&#xff0c;这个编码&#xff0c;我们称之为识别码&#xff0c;也叫做UDID&#xff08; Unique Device Identifier&#xff09; 扫描后系统提示输入密码&am…

IDEA连接EXPRESS版本的SQL server数据库

我安装的版本是SQL2019-SSEI-Expr.exe 也就是EXPRESS版本的SQL Server安排非常简单和快速。 但是默认没有启动sa用户。 启动sa用户名密码登录 默认安装完以后没有启用。 使用Miscrosoft SQL Server Management Studio 使用Windows身份连接后。 在安全性》登录名中找到sa并修改…

大模型,多模态大模型面试问题【计算图,LLama,交叉熵,SiLU,RLHF】

大模型&#xff0c;多模态大模型面试问题【计算图&#xff0c;LLama&#xff0c;交叉熵&#xff0c;SiLU&#xff0c;RLHF】 问题一&#xff1a;讲一讲计算图中pytorch是什么&#xff0c;TensorFlow是什么&#xff1f;1. PyTorch2. TensorFlow区别总结 问题二&#xff1a;Llama…

【AIGC】2024-arXiv-Lumiere:视频生成的时空扩散模型

2024-arXiv-Lumiere: A Space-Time Diffusion Model for Video Generation Lumiere&#xff1a;视频生成的时空扩散模型摘要1. 引言2. 相关工作3. Lumiere3.1 时空 U-Net (STUnet)3.2 空间超分辨率的多重扩散 4. 应用4.1 风格化生成4.2 条件生成 5. 评估和比较5.1 定性评估5.2 …

隨筆 20241025 Kafka数据一致性的韭菜比喻

在Kafka中&#xff0c;数据一致性是通过Leader和Follower副本之间的协调来实现的。为了更容易理解这个复杂的概念&#xff0c;我们可以用韭菜作为比喻。 韭菜的角色 Leader韭菜&#xff1a;代表数据的主导者&#xff0c;它负责更新和维护最新的数据。Follower韭菜&#xff1a…

【CPN TOOLS建模学习】设置变迁的属性

使用Tab键在属性之间进行切换 与一个变迁相关联的四个铭文&#xff0c;均为可选项&#xff1a; 变迁名称守卫(Guard)时间代码段 变迁延迟必须是一个正整数表达式。该表达式前面加上&#xff0c;这意味着时间铭文的形式为 delayexpr。在添加时间铭文之前&#xff0c;铭文的默…

标准正态分布的数据 tensorflow 实现正态分布图,python 编程,数据分析和人工智能...

登录后复制 import tensorflow as tfimport matplotlib.pyplot as plt# 设置随机种子以获得可重复的结果tf.random.set_seed(42)# 生成正态分布的数据# mean0 和 stddev1 表示生成标准正态分布的数据# shape(1000,) 表示生成1000个数据点data tf.random.normal(mean0, stddev1…

005 IP地址的分类

拓扑结构如下 两台主机处于同一个网关下&#xff0c;通过ping命令检测&#xff0c;可以连通 &nbps; 拓扑结构如下 使用ping 检查两台电脑是否相通, 因为网络号不一样&#xff0c;表示两台电脑不在同一个网络&#xff0c;因此无法连通 拓扑结构如下 不在同一网络的PC要相…

HTML--浮动布局练习

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>/* 整个浏览器页…

后台管理系统的通用权限解决方案(二)SpringBoot整合Swagger Springfox实现接口日志文档

文章目录 1 Swagger介绍2 Swagger常用注解3 Swagger使用案例 1 Swagger介绍 使用Swagger&#xff0c;我们只需要按照它的规范去定义接口及接口相关的信息&#xff0c;再通过Swagger衍生出来的一系列项目和工具&#xff0c;就可以做到生成各种格式的接口文档&#xff0c;生成多…

【Spring框架】Spring框架的开发方式

目录 Spring框架开发方式前言具体案例导入依赖创建数据库表结构创建实体类编写持久层接口和实现类编写业务层接口和实现类配置文件的编写 IoC注解开发注解开发入门&#xff08;半注解&#xff09;IoC常用注解Spring纯注解方式开发 Spring整合JUnit测试 Spring框架开发方式 前言…

Redis数据安全_持久化机制

由于Redis的数据都存放在内存中&#xff0c;如果没有配置持久化&#xff0c;Redis重启后数据就全丢失了&#xff0c;于是需要开启Redis的持久化功能&#xff0c;将数据保存到磁盘上&#xff0c;当Redis重启后&#xff0c;可以从磁盘中恢复数据。 持久化机制概述 对于Redis而言…

Golang | Leetcode Golang题解之第519题随机翻转矩阵

题目&#xff1a; 题解&#xff1a; type Solution struct {m, n, total intmp map[int]int }func Constructor(m, n int) Solution {return Solution{m, n, m * n, map[int]int{}} }func (s *Solution) Flip() (ans []int) {x : rand.Intn(s.total)s.total--if y, o…