요소가 오름차순으로 정렬된 nums라는 숫자 목록이 있다고 가정하고 요소를 제곱하고 정렬된 순서로 결과를 반환해야 합니다.
따라서 입력이 nums =[-8, -3, 0, 5, 6]과 같으면 출력은 [0, 9, 25, 36, 64]
가 됩니다.이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- n :=숫자 크기
- l :=0
- r :=n - 1
- 색인:=n - 1
- res :=숫자와 같은 크기의 목록으로 0으로 채움
- 인덱스>=0, do
- 만약 |숫자[l]|> |숫자[r]|,
- res[인덱스] :=nums[l] * nums[l]
- l :=l + 1
- 그렇지 않으면
- res[인덱스] :=nums[r] * nums[r]
- r :=r - 1
- 인덱스 :=인덱스 - 1
- 만약 |숫자[l]|> |숫자[r]|,
- 반환 결과
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(nums): n = len(nums) l = 0 r = n - 1 index = n - 1 res = [0 for i in range(len(nums))] while index >= 0: if abs(nums[l]) > abs(nums[r]): res[index] = nums[l] * nums[l] l += 1 else: res[index] = nums[r] * nums[r] r -= 1 index -= 1 return res nums = [-8, -3, 0, 5, 6] print(solve(nums))
입력
[-8, -3, 0, 5, 6]
출력
[0, 9, 25, 36, 64]