用java写在一个长度为n(n < 1000)的整数序列中,判断是否存在某两个元素之和为k。 输入 第一行输入序列的长度n和k,用空格分开。 第二行输入序列中的n个整数,用空格分开。 输出 如果存在某两个元素的和为k,则输出yes,否则输出no。的程序
时间: 2024-03-10 22:49:03 浏览: 57
用java求两数之和
可以使用哈希表来实现,具体步骤如下:
1. 读入序列长度n和k
2. 读入序列中的n个整数,同时将每个整数存入哈希表中
3. 遍历序列中的每个整数,对于每个整数x,判断是否存在另一个整数y使得x+y=k,如果存在则输出yes,否则继续遍历
4. 如果遍历完整个序列都没有找到满足条件的两个整数,则输出no
下面是Java代码实现:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int k = scanner.nextInt();
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < n; i++) {
int num = scanner.nextInt();
map.put(num, i);
}
for (int i = 0; i < n; i++) {
int num = scanner.nextInt();
int target = k - num;
if (map.containsKey(target) && map.get(target) != i) {
System.out.println("yes");
return;
}
}
System.out.println("no");
}
}
```
注意在存储每个整数时需要同时记录下标,因为存在相同的整数。在判断是否存在满足条件的两个整数时需要注意不要重复使用同一个整数。
阅读全文