241.括弧を追加するさまざまな方法
難易度: 中
トピック: 数学、文字列、動的プログラミング、再帰、メモ化
数値と演算子の文字列式を指定すると、数値と演算子をグループ化するために考えられるすべての方法を計算して得られるすべての結果を返します。回答は任意の順序で返すことができます。
テスト ケースは、出力値が 32 ビット整数に収まり、異なる結果の数が 104 を超えないように生成されます。
例 1:
((2-1)-1) = 0 (2-(1-1)) = 2
例 2:
(2*(3-(4*5))) = -34 ((2*3)-(4*5)) = -14 ((2*(3-4))*5) = -10 (2*((3-4)*5)) = -10 (((2*3)-4)*5) = 10
制約:
解決策:
再帰をメモ化と組み合わせて使用すると、部分式の以前に計算された結果を保存できます。これにより、冗長な計算が回避され、ソリューションが最適化されます。
再帰:
メモ化:
基本ケース:
入力「2*3-4*5」の場合:
このソリューションを PHP で実装してみましょう: 241。かっこを追加するさまざまな方法
<?php class Solution { /** * @var array */ private $memo = []; /** * @param String $expression * @return Integer[] */ public function diffWaysToCompute($expression) { ... ... ... /** * go to ./solution.php */ } /** * @param $expression * @return array|mixed */ private function compute($expression) { ... ... ... /** * go to ./solution.php */ } } // Example usage $solution = new Solution(); $expression1 = "2-1-1"; $expression2 = "2*3-4*5"; print_r($solution->diffWaysToCompute($expression1)); // Output: [0, 2] print_r($solution->diffWaysToCompute($expression2)); // Output: [-34, -14, -10, -10, 10] ?>
このアプローチでは、メモ化を活用して冗長な計算を回避し、考えられるすべての結果を効率的に計算できます。
連絡先リンク
このシリーズが役立つと思われた場合は、GitHub で リポジトリ にスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味を持ちます!
このような役立つコンテンツがさらに必要な場合は、お気軽にフォローしてください:
以上が。かっこを追加するさまざまな方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。