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、6]、[4、3]、[4、3]
の4つのグループがあるためです。例
このためのコードは-
になりますconst arr = [4, 6, 3, 3, 7, 4, 1]; const num = 4; const canDivide = (arr = [], num = 1) => { const sum = arr.reduce((acc, num) => acc + num); if (sum % num !== 0 || arr.some(num => num > sum / num)) { return false; } const used = new Set(); return (function find(start, target) { if (used.size === arr.length) { return true; } if (target < 0) { return false; } if (target === 0) { return find(0, sum / num); } for (let i = start; i < arr.length; i++) { if (!used.has(i)) { used.add(i); if (find(i + 1, target - arr[i])) { return true; } used.delete(i); } } return false; })(0, sum / num); }; console.log(canDivide(arr,num));
ソリューションで行った手順は次のとおりです-
-
手順1.合計をnumで割ることができない場合、または数値の1つがsum / numより大きい場合は、falseを返します。
-
ステップ2.HashSetを使用して使用済みの番号を追跡しました。
-
ステップ3.サブパーティションの検索を開始しました。
-
すべての数字が使用されれば、完了です。
-
サブセットの合計が大きすぎる場合は、検索を停止しました。
-
1つのサブセットが見つかった場合は、すべての番号を使用するまで検索を続けました。
-
そして最後に、未使用の番号をすべて試しました。
出力
そして、コンソールの出力は-
になりますtrue
-
プロパティがJavaScriptを使用してオブジェクトにあるかどうかを確認できますか?
以下は、プロパティがJavaScriptのオブジェクトにあるかどうかを確認するためのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <s
-
JavaScriptを使用してオブジェクトを単一のオブジェクト配列にマージする方法は?
以下は、オブジェクトを単一のオブジェクト配列にマージするコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style>