題目:從 0~65535 不重複整數序列 (0 可重複) 中任取 5 數,判斷是否可構成連續序列。0 為萬用牌可代替任意數。O(n²) 不給分。
核心邏輯:除 0 外的最大值減最小值 ≤ 4 即為連續。單次迴圈找出非零最大/最小值,複雜度 O(n)。
public boolean isContiguous(int[] array)
{
int min = -1, max = -1;
for (int i = 0; i < array.length; i++)
{
if (array[i] != 0)
{
if (min == -1 || min > array[i]) min = array[i];
if (max == -1 || max < array[i]) max = array[i];
}
}
return max - min <= array.length - 1;
}
展示 WF4 同樣能實作複雜演算法,視覺化流程反而讓邏輯更清晰。