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