Link: 912. Sort an Array
Question
Restate the problem
We need to sort an integer array in ascending order.
Method
Approach - Merge Sort
Merge sort uses divide and conquer:
- Divide the array into two halves until each subarray has length 0 or 1 (already sorted).
- Conquer (merge): merge two sorted halves using two pointers:
- Compare the front elements of both halves
- Append the smaller one to the result
- Move that pointer forward
- Return the merged sorted array.
Complexity
- Time Complexity: O(n log n)
- Space Complexity: O(n)
Edge Case
- if not array
Code
class Solution:
def sortArray(self, nums: List[int]) -> List[int]:
if not nums:
return []
def merge(left_arr, right_arr):
res = []
left = right = 0
while left < len(left_arr) and right < len(right_arr):
if left_arr[left] <= right_arr[right]:
res.append(left_arr[left])
left += 1
else:
res.append(right_arr[right])
right += 1
res.extend(left_arr[left:])
res.extend(right_arr[right:])
return res
def mergesort(nums):
if len(nums) <= 1:
return nums
mid = len(nums) // 2
left_arr = mergesort(nums[:mid])
right_arr = mergesort(nums[mid:])
return merge(left_arr, right_arr)
return mergesort(nums)History
Jan-17-2026 Solved w bug, merge condition wrong