>  기사  >  백엔드 개발  >  PHP에서 순서 배열의 제곱을 구현하는 방법

PHP에서 순서 배열의 제곱을 구현하는 방법

醉折花枝作酒筹
醉折花枝作酒筹앞으로
2021-07-08 15:46:132068검색

비감소순으로 정렬된 정수 배열 A가 주어지면, 역시 비감소순으로 정렬된 각 숫자의 제곱으로 구성된 새 배열을 반환합니다. 오늘은 에디터가 PHP에서 순서배열의 제곱을 구현하는 방법을 소개하겠습니다. 필요하시면 참고하시면 됩니다.

PHP에서 순서 배열의 제곱을 구현하는 방법

비감소순으로 정렬된 정수 배열 A가 주어지면, 역시 비감소순으로 정렬된 각 숫자의 제곱으로 구성된 새 배열을 반환합니다.

예 1:

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

예 2:

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

문제 해결 아이디어 1

내장 기능 솔루션

Code

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

문제 해결 아이디어 2

이중 포인터 탐색 , 동시에 new Array의 도움으로 제곱을 계산한 후 결과를 가장 큰 것부터 가장 작은 것 순으로 새 배열에 넣습니다.

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에서 순서 배열의 제곱을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 hxd.life에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제