-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
added question about merge sorted array
- Loading branch information
Showing
1 changed file
with
33 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
'''88. Merge Sorted Array | ||
Easy | ||
You are given two integer arrays nums1 and nums2, sorted in non-decreasing order, and two integers m and n, representing the number of elements in nums1 and nums2 respectively. | ||
Merge nums1 and nums2 into a single array sorted in non-decreasing order. | ||
The final sorted array should not be returned by the function, but instead be stored inside the array nums1. To accommodate this, nums1 has a length of m + n, where the first m elements denote the elements that should be merged, and the last n elements are set to 0 and should be ignored. nums2 has a length of n.''' | ||
class Solution: | ||
def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None: | ||
|
||
# two get pointers for nums1 and nums2 | ||
p1 = m - 1 | ||
p2 = n - 1 | ||
# set pointer for nums1 | ||
p = m + n - 1 | ||
|
||
# while there are still elements to compare | ||
while p1 >= 0 and p2 >= 0: | ||
if nums1[p1] < nums2[p2]: | ||
nums1[p] = nums2[p2] | ||
p2 -= 1 | ||
else: | ||
nums1[p] = nums1[p1] | ||
p1 -= 1 | ||
p -= 1 | ||
|
||
# add missing elements from nums2 | ||
nums1[:p2 + 1] = nums2[:p2 + 1] | ||
|
||
|
||
|
||
|