给定一个整数数组nums和一个整数目标值target(2<=nums.length<=10^4),请你在该数组中找出和为目标值target 的那两个整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。
你可以按任意顺序返回答案。
示例1:
输入:nums=[2,7,11,15],target=9
输出:[0,1]
解释:因为nums[0]+nums[1]==9,返回[0,1]。
示例2:
输入:nums =[3,2,4], target=6
输出:[1, 2]
示例3:
输入:nums = [3, 3], target = 6
输出:[0, 1]
public static void test1() {
int[] nums = {2, 7, 11, 15};
Scanner scanner = new Scanner(System.in);
int target = scanner.nextInt();
for (int i = 0; i < nums.length; i++) {
for (int j = i+1; j < nums.length; j++) {
if (nums[i] + nums[j] == target) {
System.out.println("[" + i + "," + j + "]");
} else {
System.out.println("没有结果");
}
}
}
}
某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。
A说:不是我。
B说:是C。
C说:是D。
D说:C在胡说。
已知3个人说了真话,1个人说的是假话。
根据这些信息,确定到底谁是凶手。
public static void test2() {
String[] suspects = {"A", "B", "C", "D"};
for (String murderer : suspects) {
int count = 0;
if (!murderer.equals("A")) {
count++;
}
if (murderer.equals("C")) {
count++;
}
if (murderer.equals("D")) {
count++;
}
if (!murderer.equals("D")) { // 如果D或C不是凶手,则D的话为真
count++;
}
// 检查是否正好有3个真话
if (count == 3) {
System.out.println("根据供词分析,凶手是: " + murderer);
return;
}
}
}