这个问题的核心是,我们需要遍历数组中所有出现过的数字,将它们逐一作为候选的目标数字 x,然后计算每种情况下所需的最小操作次数,最后在所有候选结果中取一个最小值。
那么,当我们选定了一个目标数字 x 后,如何计算最少操作次数呢?
根据题意,操作是移除不包含 x 的连续区间。这意味着所有不等于 x 的元素都必须被移除。这些需要被移除的元素,被数组中原有的 x 分隔成了若干个“连续块”。
例如,对于样例 [1, 2, 3, 1, 4, 5, 1]
,如果我们选择 x=1,那么数组可以看作:
[1, (2, 3), 1, (4, 5), 1]
现在有一个长度为 n 的数组。现在小红希望从数组中挑选一个数字 x ,通过做一种清理操作,将原数组中的一些数字移除,使得最终数组中的数字都等于 x 。这种移除操作一次可以删除数组中一段连续区间,但是这个区间中不能有任何数字等于 x 。小红想知道对于一个数组,他最少需要多少次移除操作完成目标。