建立測試案例
public class LeetCode1TwoSumTest {
final LeetCode1TwoSum twoSum = new LeetCode1TwoSum();
@Test
public void test1() {
final int[] nums = new int[]{2, 7, 11, 15};
final int target = 9;
int[] act = twoSum.twoSum(nums, target);
Assert.assertTrue(IntStream.of(act).anyMatch(x -> x == 0));
Assert.assertTrue(IntStream.of(act).anyMatch(x -> x == 1));
}
@Test
public void test2() {
final int[] nums = new int[]{3, 3};
final int target = 6;
int[] act = twoSum.twoSum(nums, target);
Assert.assertTrue(IntStream.of(act).anyMatch(x -> x == 0));
Assert.assertTrue(IntStream.of(act).anyMatch(x -> x == 1));
}
@Test
public void test3() {
final int[] nums = new int[]{3, 2, 4};
final int target = 6;
int[] act = twoSum.twoSum(nums, target);
Assert.assertTrue(IntStream.of(act).anyMatch(x -> x == 1));
Assert.assertTrue(IntStream.of(act).anyMatch(x -> x == 2));
}
}
Solution
public class LeetCode1TwoSum {
public int[] twoSum(final int[] nums, final int target) {
HashMap map = new HashMap<>();
int[] result = new int[2];
for (int i = 0; i < nums.length; i++) {
if (map.containsKey(nums[i])) {
int index = map.get(nums[i]);
result[0] = index;
result[1] = i;
return result;
} else {
map.put(target - nums[i], i);
}
}
return result;
}
}
沒有留言:
張貼留言