문제 링크 : 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 복습