CS-1565: Check if the target sum exists (#13371)
This commit is contained in:
parent
6159c229ac
commit
d62fd23eb9
@ -0,0 +1,58 @@
|
|||||||
|
package com.baeldung.algorithms.checktargetsum;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
public class CheckTargetSum {
|
||||||
|
public boolean isTargetSumExistNaive(int[] nums, int target) {
|
||||||
|
for (int i = 0; i < nums.length; i++) {
|
||||||
|
for (int j = i + 1; j < nums.length; j++) {
|
||||||
|
if (nums[i] + nums[j] == target) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isTargetSumExistSorted(int[] nums, int target) {
|
||||||
|
Arrays.sort(nums);
|
||||||
|
|
||||||
|
int start = 0;
|
||||||
|
int end = nums.length - 1;
|
||||||
|
|
||||||
|
while (start < end) {
|
||||||
|
int sum = nums[start] + nums[end];
|
||||||
|
|
||||||
|
if (sum == target) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sum < target) {
|
||||||
|
start++;
|
||||||
|
} else {
|
||||||
|
end--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isTargetSumExistHashSet(int[] nums, int target) {
|
||||||
|
Set<Integer> hashSet = new HashSet<>();
|
||||||
|
|
||||||
|
for (int num : nums) {
|
||||||
|
int diff = target - num;
|
||||||
|
|
||||||
|
if (hashSet.contains(diff)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
hashSet.add(num);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,46 @@
|
|||||||
|
package com.baeldung.algorithms.checktargetsum;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertFalse;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
|
public class CheckTargetSumUnitTest {
|
||||||
|
private CheckTargetSum checkTargetSum = new CheckTargetSum();
|
||||||
|
|
||||||
|
private int[] nums = new int[] { 10, 5, 15, 7, 14, 1, 9 };
|
||||||
|
|
||||||
|
private int existingTarget = 6;
|
||||||
|
|
||||||
|
private int nonExistingTarget = 27;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenArrayOfIntegers_whenTargetSumNaive_thenPairExists() {
|
||||||
|
assertTrue(checkTargetSum.isTargetSumExistNaive(nums, existingTarget));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenArrayOfIntegers_whenTargetSumNaive_thenPairDoesNotExists() {
|
||||||
|
assertFalse(checkTargetSum.isTargetSumExistNaive(nums, nonExistingTarget));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenArrayOfIntegers_whenTargetSumSorted_thenPairExists() {
|
||||||
|
assertTrue(checkTargetSum.isTargetSumExistNaive(nums, existingTarget));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenArrayOfIntegers_whenTargetSumSorted_thenPairDoesNotExists() {
|
||||||
|
assertFalse(checkTargetSum.isTargetSumExistNaive(nums, nonExistingTarget));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenArrayOfIntegers_whenTargetSumHashSet_thenPairExists() {
|
||||||
|
assertTrue(checkTargetSum.isTargetSumExistNaive(nums, existingTarget));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenArrayOfIntegers_whenTargetSumHashSet_thenPairDoesNotExists() {
|
||||||
|
assertFalse(checkTargetSum.isTargetSumExistNaive(nums, nonExistingTarget));
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user