CS-1565: Check if the target sum exists (#13371)

This commit is contained in:
Narendra Kangralkar 2023-03-05 02:40:35 +05:30 committed by GitHub
parent 6159c229ac
commit d62fd23eb9
2 changed files with 104 additions and 0 deletions

View File

@ -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;
}
}

View File

@ -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));
}
}