2022年2月8号

2022/2/9 23:17:14

本文主要是介绍2022年2月8号,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

主要自学了一部分hash和KMP,没有太搞清楚,最后看了看视频,有了一定的理解。

题目描述

出题是一件痛苦的事情!

相同的题目看多了也会有审美疲劳,于是我舍弃了大家所熟悉的 A+B Problem,改用 A-B 了哈哈!

好吧,题目是这样的:给出一串数以及一个数字 CC,要求计算出所有 A - B = CA−B=C 的数对的个数(不同位置的数字一样的数对算不同的数对)。

输入格式

输入共两行。

第一行,两个整数 N, CN,C。

第二行,NN 个整数,作为要求处理的那串数。

输出格式

一行,表示该串数中包含的满足 A - B = CA−B=C 的数对的个数。

输入输出样例

输入 #1复制

4 1
1 1 2 3

输出 #1复制

3

说明/提示

对于 75\%75% 的数据,1 \leq N \leq 20001≤N≤2000。

对于 100\%100% 的数据,1 \leq N \leq 2 \times 10^51≤N≤2×105。

保证所有输入数据绝对值小于 2^{30}230,且 C \ge 1C≥1。

2017/4/29 新添数据两组

首先分析一下题目,可以通过快慢指针来完成,比如1,1,1,1,1,1,1这个奇数的数组中,要找到中间的数,则快的每次走两个,慢的走一个,最后快的走完,慢的会停下,即找到了中间的数。

如果中间的有重复,只需找一次即可,直接记下次数,而不用每一个都走一遍;

代码如下

 



这篇关于2022年2月8号的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程