if (nums[i] != nums[j]) n++; // 錯誤:單次不等不代表唯一
內層循環每次比較不等就計數,導致嚴重高估。
for (i = 1; i < 10; i++) {
for (j = 0; j < i; j++) {
if (nums[i] == nums[j]) break; // 發現重複即跳出
}
if (i == j) n++; // 遍歷完前綴無重複,計數+1
}
qsort(nums, 10, sizeof(int), cmp);
int n = 1;
for (i = 1; i < 10; i++)
if (nums[i] != nums[i-1]) n++;
去重核心是「與所有已確認唯一元素比較」,而非「與任一元素比較」。