去重排列的核心判据是:
if (i > 1 && a[i] == a[i-1] && !used[i-1]) continue;
其中 !used[i-1] 检查「前一个相同数还没被当前方案用上」。满足条件就跳过 a[i],这条规矩的用意是( )
- A. a[i-1] 已经被用过时跳过 a[i],避免重复
- B. !used[i-1] 表示 a[i-1] 与 a[i] 值相等,应当合并成一个候选
- C. 前一个相同数还没用上,却轮到后一个上场,说明走的是「同胞换位」路线——强制相同的数按「下标靠前的先入场」,同一种排法只走一条路径
- D. 这是防止数组下标越界的检查,与去重无关