题目描述
如果数组的每一对相邻元素都是两个奇偶性不同的数字,则该数组被认为是一个 特殊数组。
Aging 有一个整数数组 nums
。如果 nums
是一个 特殊数组,返回 true
,否则返回 false
。
样例
输入:nums = [1]
输出:true
解释:
只有一个元素,所以答案为 true。
输入:nums = [2,1,4]
输出:true
解释:
只有两对相邻元素: (2,1) 和 (1,4),它们都包含了奇偶性不同的数字,因此答案为 true。
输入:nums = [4,3,1,6]
输出:false
解释:
nums[1] 和 nums[2] 都是奇数。因此答案为 false。
限制
1 <= nums.length <= 100
1 <= nums[i] <= 100
算法
(遍历) $O(n)$
- 直接按照题目的规则遍历数组。
时间复杂度
- 遍历数组一次,时间复杂度为 $O(n)$。
空间复杂度
- 仅需要常数的额外空间。
C++ 代码
class Solution {
public:
bool isArraySpecial(vector<int>& nums) {
const int n = nums.size();
for (int i = 0; i < n - 1; i++)
if (((nums[i] ^ nums[i + 1]) & 1) ^ 1)
return false;
return true;
}
};