题目链接:Pairs

完全就是Two Sum问题的变形!Two Sum问题是要求数组中和正好等于K的两个数,这个是求数组中两个数的差正好等于K的两个数。总结其实就是“骑驴找马”的问题:即当前遍历ar[i],那么只要看数组中是否存在ar[i]+K或者ar[i]-K就可以了,还是用HashMap在O(1)的时间完成这个操作。

题目有一点没说清楚的就是元素是否有重复,从Editorial来看似乎是没有重复,不过我还是用map的value记录了数出现的频率来处理了重复。

代码如下:

 import java.util.*;

 public class Solution {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int k = in.nextInt();
HashMap<Integer, Integer> map = new HashMap<Integer,Integer>();
int[] ar = new int[n];
for(int i = 0;i < n;i ++){
ar[i] = in.nextInt();
if(!map.containsKey(ar[i]))
map.put(ar[i], 0);
map.put(ar[i], map.get(ar[i])+1);
} int answer = 0;
for(int i = 0;i < n;i ++){
int up = ar[i]+k;
if(map.containsKey(up))
answer += map.get(up);
int down = ar[i]-k;
if(map.containsKey(down))
answer += map.get(down);
}
System.out.println(answer/2); }
}

最新文章

  1. 针对Asp.net MVC SEO的几点建议
  2. C语言调用curl库抓取网页图片
  3. BlockingQueue使用
  4. Java知识积累2-StringReverse实现文字(单词)倒叙输出
  5. :before :after
  6. 团队作业index
  7. CodeForces Round #285 Div.2
  8. Android中Bitmap和Drawable,等相关内容
  9. linux常用指令(飞天云)
  10. csv导入数据到mysql
  11. Hibernate中cascade作用
  12. 计蒜客 买书 dfs
  13. mysql根据字符截取字符串(总结)
  14. 面试经验合集-Java后端&lt;一&gt;
  15. PHP中get请求中参数的key不能是para
  16. spring cloud 使用ribbon简单处理客户端负载均衡
  17. Linux-c系统编程
  18. CentOS 7 安装java
  19. 《转》python学习(11)-表达式和语句
  20. QRCodeHelper 二维码生成

热门文章

  1. 介绍两款Linux文件恢复工具,ext3grep与extundelete https://www.cnblogs.com/lazyfang/p/7699994.html
  2. 谁是云的王者?OpenStack与VMware优劣对比
  3. django 类通用视图详解
  4. mediawiki常用设置
  5. Unity3D学习笔记——NGUI之UISlider
  6. iOS --有行距的图文混排
  7. faceswap
  8. 忘记了Ubuntu的密码
  9. LeetCode具体分析 :: Recover Binary Search Tree [Tree]
  10. php通过post将表单数据保存到数据库实例