977. Squares of a Sorted Array

Doyeon Kim·2022년 9월 6일

코딩테스트 공부

목록 보기
115/171

문제 링크 : https://leetcode.com/problems/squares-of-a-sorted-array/


오름차순으로 주어진(=non-decreasing) 배열 nums의 숫자들을 제곱하여 이를 오름차순으로 반환하는 문제이다

class Solution:
    def sortedSquares(self, nums: List[int]) -> List[int]:
        for i in range(len(nums)):
            nums[i]=nums[i]*nums[i]
        nums.sort()
        return nums

그렇지만

Follow up: Squaring each element and sorting the new array is very trivial, could you find an O(n) solution using a different approach?

띠로리
(딱봐도 위의 코드는 해당 조건에 부합하지 않는듯하다)

class Solution:
    def sortedSquares(self, nums: List[int]) -> List[int]:
        l , r = 0, len(nums)-1
        res = []
        
        while l <= r:
            if nums[l]*nums[l]>nums[r]*nums[r]:
                res.append(nums[l]*nums[l])
                l+=1
            else:
                res.append(nums[r]*nums[r])
                r-=1
        return res[::-1]

예를 들어 nums = [-4,-1,0,3,10]가 있으면
l부터 r까지 비교하며
큰 순으로 res에 append한 뒤 이를 역순으로 반환하는 방법이다.


22.12.12 복습

profile
성장하고 도전하는 개발자. 프로그래밍 좋아하세요?

0개의 댓글