function canSplitArray(nums: number[], m: number): boolean {
const n = nums.length;
if(n <= 2) {
return true;
}
for(let i = 0; i < n - 1; i++) {
if(nums[i] + nums[i+1] >= m) {
return true;
}
}
return false;
};
// function canSplitArray(nums: number[], m: number): boolean {
// const n = nums.length;
// if(n <= 2) {
// return true;
// }
// let sum = nums.reduce((a, b) => a + b);
// const memo: boolean[][] = [...Array(n)].map(a => Array(n).fill(undefined));
// return splitArray(nums, 0, n - 1, sum, m, memo);
// };
// function splitArray(nums: number[], left: number, right: number, sum: number, m: number, memo: boolean[][]) {
// if(memo[left][right] !== undefined) {
// return memo[left][right];
// }
// if(left >= right) {
// memo[left][right] = true;
// return true;
// }
// if(sum < m) {
// memo[left][right] = false;
// return false;
// }
// let l = nums[left], r = nums[right];
// memo[left+1][right] = splitArray(nums, left+1, right, sum-l, m, memo);
// memo[left][right-1] = splitArray(nums, left, right-1, sum-r, m, memo);
// return memo[left+1][right] || memo[left][right-1];
// }