题目重点:OA 简题找相邻一奇一偶的首个位置;题目 [1,1,6]→2 说明返回后一元素索引。
题意与假设
这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。
- 返回首个满足 arr[i−1] 与 arr[i] 奇偶不同的 i,i 从 1 开始,0-based;长度<2 返回 -1。
- 输入为整数,负数与 0 也有奇偶;题目没有最大值范围。
- 只找第一对,不要求返回所有索引。
解题路线
- 从 i=1 顺序扫,比较 arr[i−1] 和 arr[i] 的 parity(例如按最低位或余数规范化)。
- 一旦不同,立即返回 i;扫完无匹配返回 -1。首个满足条件的 i 必定是题目要求,因为此前所有相邻 pair 已依序检查。
- 测试给定两个例子,再测 [2,3]→1、[0,−1]→1、空/单元素与多个满足位置时的最早返回。
手动走一遍
[1,1,6] 的 i=1 比较 1/1 同奇,i=2 比较 1/6 奇偶不同,返回 2;[1,1,1] 无匹配返回 -1。
规模与取舍
n 个元素最多比较 n−1 次,O(n) 时间、O(1) 空间。
易错点与追问
容易失分的边界
- 返回 pair 起点 i−1,导致示例得 1。
- 跳跃两格搜索,漏相邻重叠 pair。
- 用数值差是否为奇数虽可判整数 parity,但未经整数输入校验;直接比较 parity 更明确。
继续深挖
- 若要求所有满足的 pair 怎么输出?
- 流式数组一项一项到达时怎样维护?
- 奇偶规则扩展为模 k 类别不同如何改?
