zoukankan      html  css  js  c++  java
  • 【HackerRank】Pairs

    题目链接:Pairs

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

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

    代码如下:

     1 import java.util.*;
     2 
     3 public class Solution {    
     4     public static void main(String[] args) {
     5         Scanner in = new Scanner(System.in);
     6         int n = in.nextInt();
     7         int k = in.nextInt();
     8         HashMap<Integer, Integer> map = new HashMap<Integer,Integer>();
     9         int[] ar = new int[n];
    10         for(int i = 0;i < n;i ++){
    11             ar[i] = in.nextInt();
    12             if(!map.containsKey(ar[i]))
    13                 map.put(ar[i], 0);
    14             map.put(ar[i], map.get(ar[i])+1);
    15         }
    16         
    17         int answer = 0;
    18         for(int i = 0;i < n;i ++){
    19             int up = ar[i]+k;
    20             if(map.containsKey(up))
    21                 answer += map.get(up);
    22             int down = ar[i]-k;
    23             if(map.containsKey(down))
    24                 answer += map.get(down);
    25         }
    26         System.out.println(answer/2);
    27         
    28     }
    29 }
  • 相关阅读:
    shape与reshape
    opencv4.5.0 +contrib编译流程
    人脸定位(haar特征)
    最近邻分类法
    人脸识别概述
    跟踪视频中的物体
    估算稠密光流
    resize函数
    swap函数
    hibernate的session执行增删改查方法的执行步骤
  • 原文地址:https://www.cnblogs.com/sunshineatnoon/p/3915072.html
Copyright © 2011-2022 走看看