【算法集训】基础算法:前缀和 | 习题篇

习题

1480. 一维数组的动态和

简单的前缀和

int* runningSum(int* nums, int numsSize, int* returnSize){int * ret = (int *)malloc(sizeof(int) * numsSize);ret[0] = nums[0];for(int i = 1; i < numsSize; ++i) {ret[i] = ret[i - 1] + nums[i];}*returnSize = numsSize;return ret;
}

724. 寻找数组的中心下标

#define maxn 10001
int sum[maxn]; //定义前缀和数组int pivotIndex(int* nums, int numsSize) {sum[0] = nums[0];for(int i = 1; i < numsSize; ++i) {sum[i] = sum[i - 1] + nums[i];}if(sum[numsSize - 1] - sum[0] == 0) return 0;int ans = -1;for(int i = 1; i < numsSize; ++i) {if(sum[i - 1] == sum[numsSize - 1] - sum[i]) {ans = i;break;}}return ans;
}

通过定义左右的和,并依次做变换如果相等则得到结果。
要找的是最左边的,所以先把右边加满。
左边+1,右边-1,如果相等则返回。

int pivotIndex(int* nums, int numsSize) {int left = 0;int right = 0;for(int i = 0; i < numsSize; ++i) {right += nums[i];}for(int i = 0; i < numsSize; ++i) {right -= nums[i];if(right == left) return i;left += nums[i];}return -1;
}

1310. 子数组异或查询

#define MAXX 30001
int xor[MAXX];int* xorQueries(int* arr, int arrSize, int** queries, int queriesSize, int* queriesColSize, int* returnSize) {int * ret = (int *)malloc(sizeof(int) * queriesSize);*returnSize = queriesSize;xor[0] = arr[0];for(int i = 1; i < arrSize; ++i) {xor[i] = xor[i - 1] ^ arr[i];}int ans = 0;for(int i = 0; i < queriesSize; ++i) {//获取queries的左右值int l = queries[i][0];int r = queries[i][1];if(l == 0) {ans = xor[r]; //如果从头开始则直接返回r的值}else {ans = xor[r] ^ xor[l - 1];  //否则需要减去前面截取的部分}ret[i] = ans;}return ret;
}

974. 和可被 K 整除的子数组

#define MAX 30001
int sum[MAX];
int hash[MAX];int subarraysDivByK(int* nums, int numsSize, int k) {int ans = 0;sum[0] = nums[0] % k;if(sum[0] < 0) sum[0] += k;memset(hash, 0 ,sizeof(hash));for(int i = 1; i < numsSize; ++i) {sum[i] = (sum[i - 1] + nums[i]) % k;if(sum[i] < 0) sum[i] += k;}hash[0] = 1;for(int j = 0; j <numsSize; ++j) {ans += hash[sum[j]];hash[ sum[j] ] ++;}return ans;
}

2485. 找出中枢整数

这一题是简单题,和前面套路一样,算出前缀和之后进行判断就可以了。

int sum[1001];int pivotInteger(int n) {if(n == 1) return 1;sum[1] = 1;for(int i = 2; i <= n; ++i) {sum[i] = sum[i - 1] + i;}for(int i = 1; i <= n; ++i) {if(sum[i] == sum[n] - sum[i - 1]) {return i;}}return -1;
}

1588. 所有奇数长度子数组的和

这道题如何将每个奇数组找出来想了一段时间,思路能想出来就是代码费了点时间。

int sum[110];int sumOddLengthSubarrays(int* arr, int arrSize){// 前缀和sum[0] = arr[0];int ret = arr[0];for(int i = 1; i < arrSize; ++i) {sum[i] = sum[i - 1] + arr[i];ret += arr[i];}int step = 2;// 外层设置步长while(step < arrSize) {int sub = step + 1;// 内层根据题目要求加for(int i = step; i < arrSize; i++) {if(i - sub < 0) {ret += sum[i];}else {ret += sum[i] - sum[i - sub];}}step += 2;}return ret;
}

930. 和相同的二元子数组

int hash[60001];
int sum[30001];int numSubarraysWithSum(int* nums, int numsSize, int goal){memset(hash, 0, sizeof(hash));++hash[ goal ];sum[0] = nums[0];for(int i = 1; i < numsSize; ++i) {sum[i] = sum[i - 1] + nums[i];}int ans = 0;for(int i = 0; i < numsSize; ++i) {ans += hash[ sum[i] ];++hash[ sum[i] + goal ];}return ans;
}

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

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

相关文章

阿里云4核8G服务器ECS通用算力型u1实例优惠价格

阿里云4核8G服务器优惠价格955元一年&#xff0c;配置为ECS通用算力型u1实例&#xff08;ecs.u1-c1m2.xlarge&#xff09;4核8G配置、1M到3M带宽可选、ESSD Entry系统盘20G到40G可选&#xff0c;CPU采用Intel(R) Xeon(R) Platinum处理器&#xff0c;阿里云活动链接 aliyunfuwuq…

逻辑回归详解

逻辑回归详解 逻辑回归&#xff0c;虽然名字中带有“回归”二字&#xff0c;但实际上它是一种分类算法&#xff0c;被广泛用于处理二分类问题。在机器学习和统计学习中&#xff0c;逻辑回归占据了重要的地位&#xff0c;是数据科学家和机器学习工程师的必备工具。本文将详细解…

11 flink-sql 中基于 mysql-cdc 连接 mysql-pxc 集群无法获取增量数据问题

前言 问题是来自于 群友, 2024.03.29, 也是花了一些时间 来排查这个问题 大致的问题是用 mysql-cdc 连接了一个 mysql-pxc 集群, 然后创建了一个 test_user 表 使用 "select * from test_user" 获取数据表的数据, 可以拿到 查询时的快照, 但是 无法获取到后续对…

拾光坞N3 ARM 虚拟主机 i茅台项目

拾光坞N3 在Dcoker部署i茅台案例 OS&#xff1a;Ubuntu 22.04.1 LTS aarch64 cpu&#xff1a;RK3566 ram&#xff1a;2G 部署流程——》mysql——》java8——》redis——》nginx mysql # 依赖 apt update apt install -y net-tools apt install -y libaio* # 下载mysql wg…

CSS设置字体样式

目录 前言&#xff1a; 1.font-family&#xff1a; 2.font-style&#xff1a; 3.font-weight&#xff1a; 4.font-size&#xff1a; 5.font-variant&#xff1a; 6.font&#xff1a; 前言&#xff1a; 在网页中字体是重要的组成部分&#xff0c;使用好字体可以让网页更…

[AIGC] Spring Interceptor 拦截器详解

文章目录 什么是Spring Interceptor如何使用Spring InterceptorSpring Interceptor的影响 什么是Spring Interceptor Interceptor&#xff08;拦截器&#xff09;是Spring MVC框架中的一种特性&#xff0c;类似于Servlet开发中的Filter&#xff08;过滤器&#xff09;&#xf…

一点点安全资料:数通知识扩展

工具 ENSP 华为防火墙 华为防火墙是华为提供的一种网络安全产品&#xff0c;设计用来保护企业网络不受未经授权访问和各种网络威胁的侵害。华为防火墙采用先进的技术&#xff0c;以确保网络安全&#xff0c;同时提供高性能的数据处理能力。下面我们就来详细了解一下华为防火墙…

Spring 面试题(三)

1. Spring Bean 支持哪几种作用域? Spring Bean支持以下五种作用域&#xff1a; Singleton&#xff08;单例&#xff09;&#xff1a;这是Spring默认的作用域。它表示在整个Spring IoC容器中&#xff0c;只会创建一个bean实例。这种作用域适用于那些无状态的bean&#xff0c…

Java常用函数接口

Java常用函数接口 Java 8 中引入的常用函数式接口&#xff0c;也就是 java.util.function 包中的接口。这些接口提供了一种简洁的方式来定义函数&#xff0c;常用于 Lambda 表达式和方法引用。下面是一些常用的接口&#xff1a; 一、Predicate&#xff08;断言&#xff09; …

go实现工厂模式

在Go中实现工厂模式&#xff0c;可以定义一个工厂接口和实现该接口的具体工厂类型。以下是一个简单的例子&#xff1a; package main import "fmt" // 定义一个接口&#xff0c;所有的具体产品都需要实现这个接口 type Product interface { Use() string } …

前端学习之DOM编程星星点灯案例

这个案例的实现逻辑是当你点击屏幕时&#xff0c;会完成一个事件&#xff0c;在你的屏幕上生成一张星星图片。然后再设置星星图片的大小将其改为随机。 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><t…

js和ts中的null与undefined

本文在个站同步发布&#xff0c;您可以在>>这里看到最新的文章。 1 定义 本文中的undefined和null指变量的字面值&#xff1a; undefined&#xff1a;已声明但未初始化的变量值null&#xff1a;未定义&#xff08;不存在&#xff09;的变量值 例如&#xff1a; var v…

代码随想录刷题——5双指针法

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言5.1 移除元素&#xff08;3.30&#xff09;5.2 翻转字符串&#xff08;3.30&#xff09;5.3 替换数字&#xff08;3.30&#xff09;5.4 翻转字符串里的单词(3.3…

Halcon TCP 服务端接收命令

Halcon TCP 服务端接收命令 * 1.创建服务端 ***************************************** 协议 Protocol : TCP4 * 端口 Port : 5321 * 超时 Timeout : 1.0* 打开TCP服务端 open_socket_accept (Port, [protocol, timeout], \[Protocol,Timeout], AcceptingSocket)* 2.循环接受…

Netty和websocket,如何部署Netty

Netty是一个**高性能、异步事件驱动的网络应用框架**。 Netty是基于Java NIO&#xff08;非阻塞IO&#xff09;实现的&#xff0c;它提供了一套易于使用的API&#xff0c;帮助开发者能够更高效地开发出网络应用程序。以下是Netty的一些主要特点&#xff1a; 1. **异步和事件驱…

使用开源AI引擎:提高合同管理效率与合规性方案|可本地化部署

合同管理是企业运营中的关键环节&#xff0c;它不仅涉及到企业的经济利益&#xff0c;还直接关系到企业的法律风险控制。随着企业规模的扩大和业务的复杂化&#xff0c;传统的人工合同审核方式已经难以满足高效、准确的管理需求。因此&#xff0c;采用技术手段提高合同管理的效…

Vue基础知识:vue路由——模式设置(hash路由,history路由)

路由的路径会出现#,能否将#符号去掉。 1.hash路由&#xff08;默认&#xff09; 例如&#xff1a; “http//local:8080/#/home” 哈希路由&#xff0c;它的底层基于a标签锚 2.history路由&#xff08;常用&#xff09;例如&#xff1a; “http//local:8080/home”&#xff08…

LabVIEW数控磨床振动分析及监控系统

LabVIEW数控磨床振动分析及监控系统 在现代精密加工中&#xff0c;数控磨床作为关键设备之一&#xff0c;其加工质量直接影响到产品的精度与性能。然而&#xff0c;磨削过程中的振动是影响加工质量的主要因素之一&#xff0c;不仅会导致工件表面质量下降&#xff0c;还可能缩短…

zdpdjango_argonadmin Django后台管理系统中的常见功能开发

效果预览 首先&#xff0c;看一下这个项目最开始的样子&#xff1a; 左侧优化 将左侧优化为下面的样子&#xff1a; 代码位置&#xff1a; 代码如下&#xff1a; {% load i18n static admin_argon %}<aside class"sidenav bg-white navbar navbar-vertical na…

【Go】十八、管道

文章目录 1、管道2、管道的定义3、管道的关闭4、管道的遍历5、管道 协程6、只读、只写管道7、管道的阻塞8、select 1、管道 channel本质是一个队列&#xff0c;先进先出自身线程安全&#xff0c;多协程访问时&#xff0c;不用加锁&#xff0c;channel本身就是线程安全的一个s…