comments | difficulty | edit_url | rating | source | tags | |
---|---|---|---|---|---|---|
true |
Easy |
1152 |
Weekly Contest 398 Q1 |
|
An array is considered special if every pair of its adjacent elements contains two numbers with different parity.
You are given an array of integers nums
. Return true
if nums
is a special array, otherwise, return false
.
Example 1:
Input: nums = [1]
Output: true
Explanation:
There is only one element. So the answer is true
.
Example 2:
Input: nums = [2,1,4]
Output: true
Explanation:
There is only two pairs: (2,1)
and (1,4)
, and both of them contain numbers with different parity. So the answer is true
.
Example 3:
Input: nums = [4,3,1,6]
Output: false
Explanation:
nums[1]
and nums[2]
are both odd. So the answer is false
.
Constraints:
1 <= nums.length <= 100
1 <= nums[i] <= 100
We traverse the array from left to right. For each pair of adjacent elements, if their parity is the same, then the array is not a special array, return false
; otherwise, the array is a special array, return true
.
The time complexity is
class Solution:
def isArraySpecial(self, nums: List[int]) -> bool:
return all(a % 2 != b % 2 for a, b in pairwise(nums))
class Solution {
public boolean isArraySpecial(int[] nums) {
for (int i = 1; i < nums.length; ++i) {
if (nums[i] % 2 == nums[i - 1] % 2) {
return false;
}
}
return true;
}
}
class Solution {
public:
bool isArraySpecial(vector<int>& nums) {
for (int i = 1; i < nums.size(); ++i) {
if (nums[i] % 2 == nums[i - 1] % 2) {
return false;
}
}
return true;
}
};
func isArraySpecial(nums []int) bool {
for i, x := range nums[1:] {
if x%2 == nums[i]%2 {
return false
}
}
return true
}
function isArraySpecial(nums: number[]): boolean {
for (let i = 1; i < nums.length; ++i) {
if (nums[i] % 2 === nums[i - 1] % 2) {
return false;
}
}
return true;
}