【leetcode】3151. 特殊数组 I

35 阅读1分钟

leetcode-3151.png

思路:这种非黑即白的问题,处理逻辑的时候,只要处理好一边,另外一边反过来弄就好了。主打一个逻辑严谨。
下面的解法思路比较简单,增加一个标志位,但是总感觉不够优雅

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;
};