ホームページ >バックエンド開発 >PHPの問題 >PHPで順序付き配列の2乗を実装する方法

PHPで順序付き配列の2乗を実装する方法

醉折花枝作酒筹
醉折花枝作酒筹転載
2021-07-08 15:46:132093ブラウズ

非降順でソートされた整数の配列 A を指定すると、各数値の 2 乗で構成される新しい配列が返されます。これも非降順でソートする必要があります。今回は、PHPで順序配列の2乗を実現する方法を編集者が紹介しますので、必要な方は参考にしてください。

PHPで順序付き配列の2乗を実装する方法

非降順でソートされた整数の配列 A を指定すると、同様に非降順でソートされた各数値の 2 乗で構成される新しい配列が返されます。

例 1:

输入:[-4,-1,0,3,10]
输出:[0,1,9,16,100]

例 2:

输入:[-7,-3,2,3,11]
输出:[4,9,9,49,121]

ソリューションのアイデア 1

組み込み関数ソリューション

コード

class Solution {
    /** 
    * @param Integer[] $A 
    * @return Integer[] 
    */
    function sortedSquares($A) {
        foreach ($A as &$item) {
            $item = $item * $item;
        }
        sort($A);
        return $A;
    }}

ソリューションのアイデア 2

ダブル ポインター トラバーサルと新しい配列の助けを借りて、平方計算後、結果は新しい配列に大きいものから小さいものへと配置されます。

class Solution {
    /** 
    * 
    *
    * 2 为自乘 2 次,也是平方 
    * @param Integer[] $A 
    * @return Integer[] 
    */
    function sortedSquares($A) {
        $ans = [];
        $i = 0;
        $j = count($A) - 1;
        $k = count($A) - 1;
        while ($i <= $j) {
            // 原数组是有序的,所以 -$A[$i] > $A[$j] 即为 $A[$i] 的绝对值平方后更大 
            if (-$A[$i] > $A[$j]) {
                $ans[$k--] = $A[$i] ** 2;
                // 左指针向右移动
                
                $i++;
            } else {
                $ans[$k--] = $A[$j] ** 2;
                $j--;
            }
        }
        return $ans;
    }}

推奨学習: php ビデオ チュートリアル

以上がPHPで順序付き配列の2乗を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はhxd.lifeで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。