鱼C论坛

 找回密码
 立即注册
查看: 3309|回复: 2

[已解决]没有看懂代码是怎么实现的

[复制链接]
发表于 2023-11-13 22:06:45 | 显示全部楼层    本楼为最佳答案   
这段代码的目的是计算给定数组 a 和整数 kq 的情况下,有多少个长度至少为 k 的连续子数组,其中的元素均不超过 q

- 将 -1 存入向量 p 中的目的是确保在后面的循环中,第一个子数组的起始位置正确。因为 -1 不会出现在原始数组 a 中,所以将其作为起始位置。

- 将数组的长度 n 存入向量 p 中的目的是确保最后一个子数组的结束位置正确。将 n 添加到 p 的末尾,表示最后一个子数组的结束位置。

- int d = p[j+1] - p[j]; 这行代码的目的是计算相邻元素之间的差值,即表示连续子数组的长度。通过计算 p[j+1]p[j] 的差值,可以得到连续子数组的长度。

- if (d >= k) 这个条件判断是否满足最小长度要求 k。如果满足条件,说明当前连续子数组的长度大于等于 k

总结一下,将 -1n 存入向量 p 是为了确保第一个子数组和最后一个子数组的起始位置和结束位置正确。而计算 p[j+1] - p[j] 的差值则是为了得到连续子数组的长度。

希望可以解答您的疑问,如果还有其他问题,请随时提问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-4-1 18:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表