Write a function that takes in an array of positive integers and returns the maximum sum of non-adjacent elements in the array.
If the input array is empty, the function should return 0.
Sample input
[75, 105, 120, 75, 90, 135]
Sample output
330 = 75 + 120 + 135
Solution
Time Complexity: O(n)
Space Complexity: O(1)
static int maxSubsetSumNoAdjacent(int[] array) { int answer = 0; if (array.length == 0) { return 0; } else if (array.length == 1) { return array[0]; } int first = Math.max(array[0], array[1]); int second = array[0]; int current = 0; for (int i = 2; i < array.length; i++) { current = Math.max(first, second + array[i]); second = first; first = current; } answer = first; return answer; }