JavaScriptで配列を連続したサブシーケンスに分割できます
問題
最初で唯一の引数として、ソートされた整数の配列arrを受け取るJavaScript関数を作成する必要があります。
配列を1つ以上のサブシーケンスに分割して、各サブシーケンスが連続する整数で構成され、長さが3以上になる場合にのみ、関数はtrueを返す必要があります。それ以外の場合はfalseです。
たとえば、関数への入力が
入力
const arr = [1, 2, 3, 3, 4, 5];
出力
const output = true;
出力の説明
それらを2つの連続したサブシーケンスに分割できます-
1, 2, 3 3, 4, 5
例
以下はコードです-
const arr = [1, 2, 3, 3, 4, 5]; const canSplit = (arr = []) => { const count = arr.reduce((acc, num) => { acc[num] = (acc[num] || 0) + 1 return acc }, {}) const needed = {} for (const num of arr) { if (count[num] <= 0) { continue } count[num] -= 1 if (needed[num] > 0) { needed[num] -= 1 needed[num + 1] = (needed[num + 1] || 0) + 1 } else if (count[num + 1] > 0 && count[num + 2]) { count[num + 1] -= 1 count[num + 2] -= 1 needed[num + 3] = (needed[num + 3] || 0) + 1 } else { return false } } return true } console.log(canSplit(arr));
出力
true
-
JavaScriptで配列を合計が等しいn個のパーティションに分割できます
最初の引数として数値の配列arrを取り、2番目の引数として数値numを受け取るJavaScript関数を作成する必要があります。 関数は、すべてのグループの合計が等しくなるように、配列arrの要素をnumグループに分散する方法が存在するかどうかを判断する必要があります。そのような方法が存在する場合、関数はtrueを返し、そうでない場合はfalseを返す必要があります。 例- 入力配列と数値が-の場合 const arr = [4, 6, 3, 3, 7, 4, 1]; const num = 4; その場合、出力は-になります。 const output = true; [7]、[1
-
C++で配列を連続するサブシーケンスに分割する
昇順で並べ替えられた配列numがあるとします。各サブシーケンスが連続する整数で構成され、長さが少なくとも3になるように、1つ以上のサブシーケンスに分割できる場合にのみ、trueを返す必要があります。したがって、入力が[1,2,3,3,4、 4,5,5]の場合、2つの連続したシーケンスがあるため、出力はTrueになります。これらは[1,2,3,4,5]と[3,4,5]です。 これを解決するには、次の手順に従います- マップmを作成し、numsの頻度をmに格納し、numsのサイズをmに格納します cnt:=n 0からn–1の範囲のiの場合 x:=nums [i] m[x]およびm[x+