💡 ACM 模式练习说明
很多大厂机试与笔试采用 ACM 模式(需要自己处理 System.in 输入与 System.out 输出),与力扣的核心代码模式不同。本题单预设了经典题目与 ACM 输入输出处理模板,帮助你在笔试中得心应手。
Java ACM 模式通用代码模板
// Java ACM 模式两数之和标准处理模板
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
int n = in.nextInt();
int target = in.nextInt();
int[] nums = new int[n];
for (int i = 0; i < n; i++) {
nums[i] = in.nextInt();
}
int[] res = twoSum(nums, target);
if (res.length == 2) {
System.out.println(res[0] + " " + res[1]);
} else {
System.out.println("-1 -1");
}
}
}
public static int[] twoSum(int[] nums, int target) {
Map valToIndex = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
int complement = target - nums[i];
if (valToIndex.containsKey(complement)) {
return new int[]{valToIndex.get(complement), i};
}
valToIndex.put(nums[i], i);
}
return new int[0];
}
}