2601。素数減算演算
難易度: 中
トピック: 配列、数学、二分探索、貪欲、整数論
長さ n の 0 インデックス付き 整数配列 nums が与えられます。
次の操作は何度でも実行できます:
上記の操作を使用して nums を厳密に増加する配列にできる場合は true を返し、それ以外の場合は falseを返します。
厳密に増加する配列は、各要素がその前の要素より厳密に大きい配列です。
例 1:
例 2:
例 3:
制約:
ヒント:
解決策:
アルゴリズムを分解し、PHP の構文と機能に適応させる必要があります。この解決策には主に次の手順が含まれます:
Implémentons cette solution en PHP : 2601. Opération de soustraction première
<?php class Solution { /** * @param Integer[] $nums * @return Boolean */ function primeSubOperation($nums) { ... ... ... /** * go to ./solution.php */ } /** * Helper function to generate all primes up to n using Sieve of Eratosthenes * * @param $n * @return array */ private function sieveEratosthenes($n) { ... ... ... /** * go to ./solution.php */ } /** * Helper function to find the largest prime less than a given limit using binary search * * @param $primes * @param $limit * @return mixed|null */ private function findLargestPrimeLessThan($primes, $limit) { ... ... ... /** * go to ./solution.php */ } } // Example usage: $solution = new Solution(); echo $solution->primeSubOperation([4, 9, 6, 10]) ? 'true' : 'false'; // Output: true echo $solution->primeSubOperation([6, 8, 11, 12]) ? 'true' : 'false'; // Output: true echo $solution->primeSubOperation([5, 8, 3]) ? 'true' : 'false'; // Output: false ?>
primeSubOperation : parcourt chaque élément en nombres et vérifie si nous pouvons rendre chaque élément supérieur au précédent en soustrayant un nombre premier approprié.
sieveEratosthène : génère tous les nombres premiers jusqu'à 1000 à l'aide du tamis d'Eratosthène et les renvoie sous forme de tableau.
findLargestPrimeLessThan : utilise la recherche binaire pour trouver le plus grand nombre premier inférieur à une limite donnée, garantissant ainsi que nous trouvons le nombre premier optimal pour la soustraction.
Cette solution renverra vrai ou faux selon qu'il est possible de rendre les nombres strictement croissants en effectuant les opérations de soustraction de nombres premiers décrites.
Liens de contact
Si vous avez trouvé cette série utile, pensez à donner une étoile au référentiel sur GitHub ou à partager la publication sur vos réseaux sociaux préférés ?. Votre soutien signifierait beaucoup pour moi !
Si vous souhaitez du contenu plus utile comme celui-ci, n'hésitez pas à me suivre :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!