【发布时间】:2014-06-20 21:20:12
【问题描述】:
这是我的在线面试问题,我已经提交了答案。但是,由于时间原因,编译终止了,所以我才提交。我能得到你的反馈吗?提前致谢。
问题:
给定 N 个数字,[N
输入格式:
- 第一行包含 N 和 K(整数)。
- 第二行包含 N 个集合的数字。确保所有 N 个数字都是不同的。
输出格式:
- 一个整数表示具有差异 K 的数字对的数量。
示例输入 #00:
5 2
1 5 3 4 2
示例输出 #00:
3
我的代码:
import java.io.*
import java.util.*;
public class DiffNumbers {
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String line1 = in.readLine();
String line2 = in.readLine();
int n = Integer.parseInt(line1.split(" ")[0]);
int diff = Integer.parseInt(line1.split(" ")[1]);
Hashtable table = new Hashtable();
int[] arr = new int[n];
for(in i=0; i<n; i++) {
arr[i] = Integer.parseInt(line2.split(" ")[i]);
table.put(Integer.parseInt(line2.split(" ")[i]));
}
int count = 0;
for(in i=0; i<n; i++) {
if(table.containsKey(arr[i]+diff) {
count++;
}
}
system.out.println(count);
}
}
【问题讨论】:
-
您的示例输入与您对输入格式的描述不符
-
@Ben 这不是 O(n^2) 这是 O(n)。
-
我看不出有什么需要改进的地方,我不确定的一件事是当你打电话给
line2.split(" ")[i]时,它会拆分line2只once还是n times?在代码中它看起来像 n 次,但现在编译器非常聪明。 -
@A4L 感谢您的评论。