【HackerRank】Pairs
2024-09-05 21:34:08
题目链接: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); }
}
最新文章
- 针对Asp.net MVC SEO的几点建议
- C语言调用curl库抓取网页图片
- BlockingQueue使用
- Java知识积累2-StringReverse实现文字(单词)倒叙输出
- :before :after
- 团队作业index
- CodeForces Round #285 Div.2
- Android中Bitmap和Drawable,等相关内容
- linux常用指令(飞天云)
- csv导入数据到mysql
- Hibernate中cascade作用
- 计蒜客 买书 dfs
- mysql根据字符截取字符串(总结)
- 面试经验合集-Java后端<;一>;
- PHP中get请求中参数的key不能是para
- spring cloud 使用ribbon简单处理客户端负载均衡
- Linux-c系统编程
- CentOS 7 安装java
- 《转》python学习(11)-表达式和语句
- QRCodeHelper 二维码生成
热门文章
- 介绍两款Linux文件恢复工具,ext3grep与extundelete https://www.cnblogs.com/lazyfang/p/7699994.html
- 谁是云的王者?OpenStack与VMware优劣对比
- django 类通用视图详解
- mediawiki常用设置
- Unity3D学习笔记——NGUI之UISlider
- iOS --有行距的图文混排
- faceswap
- 忘记了Ubuntu的密码
- LeetCode具体分析 :: Recover Binary Search Tree [Tree]
- php通过post将表单数据保存到数据库实例