a1603169 / pwa-nextjs-tailwindcss-blog

blog template with simple design
https://seunghun-website.vercel.app
1 stars 0 forks source link

blog/leetcode_median_of_two_sorted_arrays #41

Open utterances-bot opened 8 months ago

utterances-bot commented 8 months ago

Median of Two Sorted Array (Leetcode)

Median of Two Sorted Array (Leetcode)

http://localhost:3000/blog/leetcode_median_of_two_sorted_arrays

a1603169 commented 8 months ago

이 코드는 두 정렬된 배열 nums1nums2의 중앙값을 찾는 함수입니다. if 절은 두 배열에서 다음에 고려할 원소를 결정하는 데 사용됩니다. 이해를 돕기 위해 if 절을 분석해 보겠습니다.

if (i < nums1.length && (j >= nums2.length || nums1[i] < nums2[j])) {
    current = nums1[i++];
} else {
    current = nums2[j++];
}

if 절의 각 부분은 다음과 같은 조건을 확인합니다:

  1. i < nums1.length: 인덱스 inums1 배열의 범위 내에 있는지 확인합니다. 즉, nums1 배열에서 아직 고려하지 않은 원소가 남아 있는지 확인합니다.
  2. j >= nums2.length: 인덱스 jnums2 배열의 범위를 벗어났는지 확인합니다. 즉, nums2 배열의 모든 원소가 이미 고려되었는지 확인합니다.
  3. nums1[i] < nums2[j]: nums1 배열의 현재 원소가 nums2 배열의 현재 원소보다 작은지 확인합니다.

if 절의 조건은 다음 두 가지 경우 중 하나에 해당할 때 true가 됩니다:

이 조건에 따라 current 변수는 두 배열의 원소 중 다음으로 작은 값을 가집니다. 이렇게 하면 두 배열의 원소들을 실제로 병합하지 않고도 순차적으로 접근하여 중앙값을 찾을 수 있습니다.

a1603169 commented 8 months ago

최적화된 함수의 작동 방식을 보다 잘 이해하기 위한 예시:

예시 1

nums1 = [1, 3]
nums2 = [2]

이 경우에는 nums1nums2를 합쳤을 때 [1, 2, 3]이 되고, 중앙값은 2입니다.

결과: 중앙값은 2 (isEvenfalse이므로 current의 값)

예시 2

nums1 = [1, 2]
nums2 = [3, 4]

이 경우에는 nums1nums2를 합쳤을 때 [1, 2, 3, 4]이 되고, 중앙값은 (2 + 3) / 2 = 2.5입니다.

current = 2 (nums1[1]nums2[0]보다 작음)

결과: 중앙값은 (2 + 3) / 2 = 2.5 (isEventrue이므로 currentprevious의 평균)

예시 3

nums1 = [1, 5]
nums2 = [2, 3, 4, 6]

이 경우에는 nums1nums2를 합쳤을 때 [1, 2, 3, 4, 5, 6]이 되고, 중앙값은 (3 + 4) / 2 = 3.5입니다.

결과: 중앙값은 (3 + 4) / 2 = 3.5 (isEventrue이므로 currentprevious의 평균)

이러한 예시들은 함수가 어떻게 두 정렬된 배열에서 중앙값을 찾는지 보여줍니다. if 문은 두 배열의 현재 원소 중 더 작은 값을 current로 선택하고, 이를 통해 중앙값에 도달할 때까지 반복합니다. 배열의 길이가 짝수인 경우, 중앙에 위치한 두 원소의 평균을 반환하고, 홀수인 경우 중앙 원소

예시 코드의 실행 결과는 다음과 같습니다:

  1. 예시 1 (nums1 = [1, 3], nums2 = [2]): 중앙값은 2입니다.
  2. 예시 2 (nums1 = [1, 2], nums2 = [3, 4]): 중앙값은 2.5입니다.
  3. 예시 3 (nums1 = [1, 5], nums2 = [2, 3, 4, 6]): 중앙값은 3.5입니다.

이 결과는 앞서 설명한 로직대로 두 배열에서 중앙값을 찾는 방식을 정확히 반영하고 있습니다. if 절은 두 배열에서 다음 원소를 비교하여 더 작은 값을 선택하고, 이를 통해 중앙값을 효과적으로 찾아냅니다.