现在就一个WA了,我把int[] arr = new int[(int)2e5+5]改成int[] arr = new int[N]就好了,但还是有一个WA不知道哪里问题。
by stLOVEyxx @ 2023-04-16 06:30:05
我开始也是二分,这里是我后面的代码用的map
```java
import java.io.*;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Scanner;
public class Main {
static final Scanner sc = new Scanner(System.in);
static final StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static final PrintWriter print = new PrintWriter(System.out);
public static int nextInt() throws IOException {
st.nextToken();
return (int) st.nval;
}
public static void main(String[] args) throws IOException {
int n = nextInt();
int c = nextInt();
HashMap<Integer,Integer> map = new HashMap<>();
for (int i = 0; i < n; i++) {
int key = nextInt();
map.put(key,map.getOrDefault(key,0)+1);
}
long count = 0;
for (Integer key : map.keySet()) {
if (map.containsKey(key - c)) {
count += (long) map.get(key) * map.get(key - c);
}
}
System.out.println(count);
}
private static void demo1(int n, int c) throws IOException {
int[] a = new int[n];
for (int i = 0; i < n; i++) {
a[i] = nextInt();
}
Arrays.sort(a);
int count = 0;
for (int i = 0; i < n; i++) {
int b = a[i] - c;
int j = binarySearch(a, 0, i + 1, b);
while (b == a[j++]) {
count++;
}
}
System.out.println(count);
}
public static int binarySearch(int[] a, int fromIndex, int toIndex, int key) {
int low = fromIndex;
int high = toIndex - 1;
while (low < high) {
int mid = (low + high) >>> 1;
int midVal = a[mid];
if (midVal < key)
low = mid + 1;
else if (midVal >= key)
high = mid;
}
return low; // key not found.
}
}
```
by ZAYu @ 2023-04-18 19:04:52
@[stLOVEyxx](/user/592424) 可以参考使用java中map提供的getOrDefault,
```java
Scanner s = new Scanner(System.in);
int N = s.nextInt();
int C = s.nextInt();
Map<Integer, Integer> map = new HashMap<>();
long count = 0;
for (int i = 0; i < N; i++) {
int num = s.nextInt();
count += map.getOrDefault(num - C, 0);
count += map.getOrDefault(num + C, 0);
map.put(num, map.getOrDefault(num, 0) + 1);
}
System.out.println(count);
```
by GoWithTheFlow @ 2023-07-02 10:06:25