特殊数组Ⅰ。用go语言,一个数组被称为“特殊数组”,当且仅当其所有相邻的两个元素具有不同的奇偶性(即一个为奇数,另一个为偶数)。
给定一个整数数组 nums,请判断这个数组是否满足这一条件,如果满足则返回 true,否则返回 false。
1 <= nums.length <= 100。
1 <= nums[i] <= 100。
输入:nums = [2,1,4]。
输出:true。
解释:
只有两对相邻元素: (2,1) 和 (1,4),它们都包含了奇偶性不同的数字,因此答案为 true。
大体步骤如下:
1.遍历整数数组 nums,检查相邻两个元素的奇偶性是否相同,如果相同则返回 false。
2.若遍历完成后没有发现相邻两个元素奇偶性相同的情况,则返回 true。
时间复杂度分析:
- 遍历整个数组来检查相邻两个元素的奇偶性,时间复杂度为 O(n),其中 n 是数组 nums 的长度。
空间复杂度分析:
- 算法使用了常数级别的额外空间,即没有使用额外的空间来存储状态或辅助数据结构,因此空间复杂度为 O(1)。
Go完整代码如下:
package main
import (
"fmt"
)
func isArraySpecial(nums []int) bool {
n := len(nums)
for i := 1; i < n; i++ {
if nums[i-1]%2 == nums[i]%2 {
return false
}
}
return true
}
func main() {
nums := []int{2, 1, 4}
fmt.Println(isArraySpecial(nums))
}
Rust完整代码如下:
fn is_array_special(nums: &Vec<i32>) -> bool {
for i in 1..nums.len() {
if nums[i-1] % 2 == nums[i] % 2 {
return false;
}
}
true
}
fn main() {
let nums = vec![2, 1, 4];
println!("{}", is_array_special(&nums));
}