思路:这种非黑即白的问题,处理逻辑的时候,只要处理好一边,另外一边反过来弄就好了。主打一个逻辑严谨。
下面的解法思路比较简单,增加一个标志位,但是总感觉不够优雅
var isArraySpecial = function (nums) {
if (nums.length <= 1) return true
let oddFlag = nums[0] % 2 === 1
for (let i = 1; i < nums.length; ++i) {
if (nums[i] % 2 === 1) {
if (!oddFlag) oddFlag = true
else return false
} else {
if (oddFlag) oddFlag = false
else return false
}
}
return true
};
优雅的写法,连续比较相邻的两个数字即可
var isArraySpecial = function(nums) {
for (let i = 1; i < nums.length; ++i) {
if (nums[i] % 2 === nums[i - 1] % 2) {
return false;
}
}
return true;
};