canPartition = (nums) => {
    const isEmpty = nums.length === 0;
    if (isEmpty) return false;

    const sum = getSum(nums);                 /* Time O(N) */

    const isEven = ((sum % 2) === 0);
    if (!isEven) return false;

    const subSetSum = (sum >> 1);
    const memo = initMemo(nums, subSetSum);        /*               | Space O(N * M) */
    const index = (nums.length - 1);

    return dfs(nums, index, subSetSum, memo);/* Time O(N * M) | Space O(N * M) */
}
DP - Top Down
Matrix - Memo
Time O(N * M) | Space O(N * M)
https://leetcode.com/problems/partition-equal-subset-sum/
@param {number[]} nums
@return {boolean}