MCPcopy Create free account
hub / github.com/MisterBooo/LeetCodeAnimation / Solution

Class Solution

problems/0004-median-of-two-sorted-arrays/Code/1.java:1–54  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1public class Solution {
2 public double findMedianSortedArrays(int[] nums1, int[] nums2) {
3 // ʹnums1��Ϊ�϶�����,����������߼����ٶ�,ͬʱ���Ա���һЩ�߽�����
4 if (nums1.length > nums2.length) {
5 int[] temp = nums1;
6 nums1 = nums2;
7 nums2 = temp;
8 }
9
10 int len1 = nums1.length;
11 int len2 = nums2.length;
12 int leftLen = (len1 + len2 + 1) / 2; //������ϲ�&�����,���ߵij���
13
14 // ������1���ж��ּ���
15 int start = 0;
16 int end = len1;
17 while (start <= end) {
18 // ��������ı�����A,B��λ��(��1��ʼ����)
19 // count1 = 2 ��ʾ num1 ����ĵ�2������
20 // ��index��1
21 int count1 = start + ((end - start) / 2);
22 int count2 = leftLen - count1;
23
24 if (count1 > 0 && nums1[count1 - 1] > nums2[count2]) {
25 // A��B��next��Ҫ��
26 end = count1 - 1;
27 } else if (count1 < len1 && nums2[count2 - 1] > nums1[count1]) {
28 // B��A��next��Ҫ��
29 start = count1 + 1;
30 } else {
31 // ��ȡ��λ��
32 int result = (count1 == 0)? nums2[count2 - 1]: // ��num1������������������ұ�
33 (count2 == 0)? nums1[count1 - 1]: // ��num2������������������ұ�
34 Math.max(nums1[count1 - 1], nums2[count2 - 1]); // �Ƚ�A,B
35 if (isOdd(len1 + len2)) {
36 return result;
37 }
38
39 // ����ż�����������
40 int nextValue = (count1 == len1) ? nums2[count2]:
41 (count2 == len2) ? nums1[count1]:
42 Math.min(nums1[count1], nums2[count2]);
43 return (result + nextValue) / 2.0;
44 }
45 }
46
47 return Integer.MIN_VALUE; // ���Ե���������
48 }
49
50 // ��������true,ż������false
51 private boolean isOdd(int x) {
52 return (x & 1) == 1;
53 }
54}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected