Skip to content

3201-find-the-maximum-length-of-valid-subsequence-i

DevGod
DevGod
Elf Vtuber
/**
* @param {number[]} nums
* @return {number}
*/
var maximumLength = function(nums) {
const N = nums.length;
let evenOdd = new Array(N+1).fill(0);
let oddEven = new Array(N+1).fill(0);
let evenCount = +( (nums[N-1]%2) === 0);
let oddCount = +( (nums[N-1]%2) === 1);
for(let I = N-2; I>=0; I--){
//Counts of just evens / odds
if(nums[I]%2){ oddCount++; }
else{ evenCount++; }
//DP path of even to odd
if( (nums[I]%2 == 0) && (nums[I+1]%2 == 1) ){
evenOdd[I] = Math.max( oddEven[I+1]+1, 2)
}else{
evenOdd[I] = evenOdd[I+1];
}
//DP path of odd to even
if( (nums[I]%2 == 1) && (nums[I+1]%2 == 0) ){
oddEven[I] = Math.max( evenOdd[I+1]+1, 2)
}else{
oddEven[I] = oddEven[I+1];
}
}
return Math.max(evenCount, oddCount, evenOdd[0], oddEven[0]);
};