# Max Subset Sum No Adjacent

![](https://3743232000-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHW2IQuh2PFpWJDvBz2FF%2Fuploads%2Fgit-blob-3320e734fa1beba906a1dac4ac1dae434fe72a11%2FScreenshot%202023-01-22%20at%2022.21.14.png?alt=media)

* n, 1

```jsx
function maxSubsetSumNoAdjacent(arr) {

  if (arr.length === 0) return 0;
  if (arr.length === 1) return arr[0];

  let first = arr[0];
  let second = Math.max(arr[1], arr[0]);
  
  for (let i = 2; i < arr.length; i++) {
    const curr = Math.max(second, first + arr[i]);
    first = second;
    second = curr;
  }

  return second;
}

// Do not edit the line below.
exports.maxSubsetSumNoAdjacent = maxSubsetSumNoAdjacent;
```

```jsx
function maxSubsetSumNoAdjacent(arr) {
  if (arr.length === 0) return 0;
  if (arr.length === 1) return arr[0];
  
  let twoStepBefore = arr[0];
  let oneStepBefore = Math.max(arr[0], arr[1]);

  for (let i = 2; i < arr.length; ++i) {
    const curr = arr[i];
    currentSum = twoStepBefore + curr;
    twoStepBefore = oneStepBefore;
    oneStepBefore = Math.max(currentSum, oneStepBefore);
  }
  
  return oneStepBefore;
}

// Do not edit the line below.
exports.maxSubsetSumNoAdjacent = maxSubsetSumNoAdjacent;
```
