Welcome to Subscribe On Youtube
3151. Special Array I
Description
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 <= 1001 <= nums[i] <= 100
Solutions
Solution 1: Single Pass
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 $O(n)$, where $n$ is the length of the array. The space complexity is $O(1)`.
-
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; } }; -
class Solution: def isArraySpecial(self, nums: List[int]) -> bool: return all(a % 2 != b % 2 for a, b in pairwise(nums)) -
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; }