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 <= 100
1 <= 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; }