タイトル:アレイ、例えば、不連続の最小数を見つける与えられる:[9,1,2,3,5,7,8]最小のブレーク番号3
思考の最も簡単な種類は:配列をソートします、一つの要素出張後の要素と比較して発注した後、左端の開始前にないものを見つけるために、あなたがソートに必要な、それに関連したソートアルゴリズムの時間複雑さ、
第アイデア:配列の最大長を確立する、アレイ内の最大の要素を見つけ、その後、新しい配列に元の配列と素子群の値を通過し、要素位置の添え字に置きます値は、元の配列の要素の最小値を見つけ、そこから新たなトラバース配列添字、リクエストに応じて以前の位置で0の値の位置は、このようにして、その後、時間複雑度はO(N)である場合、しかし、スペースの複雑さは、最大値に関連付けられた、保証することはできません
第三のアイデア:私たちは実際には、新しい配列、我々が使用していない最小角度標準の以前の場所で、その後、新しい配列のすべての要素が前方に移動することができ、第二の考えから知っている、各要素値は、ある程度、空間的複雑度を低減するように、要素に対する要素の最小値を差し引いたが、要素値の添え字を入れない;擬似コードを次のように
INT []結果=新しいINT [最大 - 最小+ 1]。
{(I ++; I <Array.lengthとiは0 = INT)のために
結果[配列[I] -min] =配列[i]は、
}
{(I ++; I <result.length iが0 = INT)のために
IF(結果[I] == 0){
結果を返す[I-1];
}
}
上記のプログラムはまた、配列は0が含まれている場合、問題、解決策があるだろうと判断され、問題を残しました。
INT []結果=新しいINT [最大 - 最小+ 1]。
{(I ++; I <Array.lengthとiは0 = INT)のために
結果[配列[I] -min] =配列[I] -min;値も格納されているマイナス最小---------
}
以下のために(; I <result.length、整数iが1 = I ++){最小値に対応する第一の記憶された位置は間違い0であるため、-------- iが、1から始まります
IF(結果[I] == 0){
リターン結果[I-1] +分。
}
}
別の解決策がある:0が決定されていないと判定された場合、結果が1でない場合は、使用前に数を減算数は、前者が数であります