일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 크롤링
- json
- 뉴스
- 20200615뉴스
- 20201017뉴스
- 파이썬
- 헤드라인
- 20200816뉴스
- 알고리즘
- 헤드라인뉴스
- 20201016뉴스
- 기사
- 20201018뉴스
- 백준
- 백준2225
- 뉴스헤드라인
- 20201013뉴스
- Python
- 헤드라인기사
- MySQL
- 기사헤드라인
- 20201011뉴스
- LeetCode #Python #알고리즘 #코딩테스트 #interview
- 20201015뉴스
- 경제뉴스
- 코테
- 헤드라인모음
- C++
- encoding
- 오늘의뉴스
Archives
- Today
- Total
HelloCho
[Python] #4. Median of Two Sorted Arrays(Hard) 본문
문제 #4. Add Two NumbersMedian of Two Sorted Arrays(Medium)
이 문제는 두개의 정렬된 array가 주어졌을 때 두개의 array를 합쳐 median값을 구하는 문제이다.
먼저 시도한 방법은 두개의 array를 일일이 비교해서 merge한 이후에 median값을 계산하는 것이였다. 코드는 아래와 같다.
class Solution:
def findMedianSortedArrays(self, nums1, nums2):
len1 = len(nums1)
len2 = len(nums2)
array = []
lt = 0
rt = 0
while len1 and len2:
if nums1[lt]> nums2[rt]:
array.append(nums2[rt])
rt +=1
len2 -=1
else:
array.append(nums1[lt])
lt +=1
len1 -=1
print(len1,len2)
if len1:
array += nums1[lt:]
elif len2:
array += nums2[rt:]
print(array)
length = len(array)
if length % 2 ==1 :
return array[length//2]
else:
return (array[(length//2)-1] + array[(length//2)])/2
두 개의 array를 값을 일일이 비교해 합친 이후에 median 값을 계산했다. 결과는 아래와 같다.
속도는 96ms, 메모리는 14.1MB 소모했다.
다음 방법은 일일이 비교하지 않고 python list자료구주에 내장함수를 활용해서 해결하는 방법이다.
class Solution:
def findMedianSortedArrays(self, nums1, nums2):
nums1.extend(nums2)
nums1 = sorted(nums1)
length = len(nums1)
if length %2 == 1:
return nums1[length//2]
else:
return (nums1[(length//2)-1] + nums1[(length//2)])/2
결과는 아래와 같다.
96ms 시간과 14.1MB의 메모리를 소모했다.
'코테 > LeetCode' 카테고리의 다른 글
[Python] #21. Merge Two Sorted Lists(Easy) (0) | 2020.09.06 |
---|---|
[Python] #20. Valid Parentheses(Easy) (0) | 2020.09.06 |
[Python] #2. Add Two Numbers(Medium) (0) | 2020.08.29 |
[Python] #14. Longest Common Prefix(Easy) (0) | 2020.08.29 |
[Python] #13. Roman to Integer(Easy) (0) | 2020.08.26 |
Comments