Skip to content

Commit 694d25c

Browse files
committed
004 md
1 parent 5091b36 commit 694d25c

File tree

3 files changed

+58
-47
lines changed

3 files changed

+58
-47
lines changed

note/004/README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ The median is (2 + 3)/2 = 2.5
4747

4848
特别地,我们选取 `m = k / 2`,下面是我画的草图,希望能帮助大家理解。
4949

50-
![](https://raw.githubusercontent.com/Blankj/awesome-java-leetcode/master/note/004/my_draw.jpg)
5150

5251
借助上面的理论,你能写出相关代码了吗?
5352

src/me/codebase/leetcode/Test.java

Lines changed: 36 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,57 @@
11
package me.codebase.leetcode;
22

3-
import java.util.HashMap;
4-
import java.util.Map;
5-
63
/**
74
* Created by chendong on 2017/12/13.
85
*/
96
public class Test {
107

118

129
public static void main(String[] args) {
13-
Integer[] arr1 = {1, 2, 3};
14-
Integer[] arr2 = {2, 3, 4};
15-
16-
int mid1 = arr1.length / 2;
17-
int mid2 = arr2.length / 2;
18-
}
10+
int[] A = {1, 3, 4, 6};
11+
int[] B = {2, 4, 5, 8, 9, 10};
12+
int[] C = {1, 2, 3, 4, 4, 5, 6, 8, 9, 10};
13+
// 4.5
1914

20-
/* public static int lengthOfLongestSubstring(String s) {
21-
int len;
22-
if (s == null || (len = s.length()) == 0) return 0;
23-
int preP = 0, max = 0;
24-
int[] hash = new int[128];
25-
for (int i = 0; i < len; ++i) {
26-
char c = s.charAt(i);
27-
if (hash[c] > preP) {
28-
preP = hash[c];
29-
}
30-
int l = i - preP + 1;
31-
hash[c] = i + 1;
32-
if (l > max) max = l;
33-
}
34-
return max;
35-
}
36-
*/
37-
private static String distinct(String str) {
38-
Map<Character, Integer> map = new HashMap<>();
39-
char[] chars = str.toCharArray();
40-
for (int i = 0; i < chars.length; i++) {
4115

42-
if (map.get(chars[i]) != null)
43-
map.put(chars[i], i - map.get(chars[i]));
44-
else
45-
map.put(chars[i], i);
46-
}
47-
return null;
16+
System.out.println(findMedianSortedArrays(A, B));
4817
}
4918

5019

20+
/**
21+
* satisfy the require which is should be O(log(m+n))
22+
* <p>
23+
* Array, Binary Search, Divide and Conquer
24+
*/
25+
private static int findKth(int k, int[] A, int[] B) {
5126

27+
return 0;
28+
}
5229

53-
/*
54-
private static String findSubString(String str, int index) {
55-
char[] chars = str.toCharArray();
56-
int l = 1;
57-
for (int i = index; i < chars.length; i++) {
58-
if (chars[i] != chars[i++]) {
59-
l++;
60-
}else break;
30+
private static int findKth(int k, int[] arr) {
31+
return 0;
32+
}
33+
34+
public static double findMedianSortedArrays(int[] nums1, int[] nums2) {
35+
int len = nums1.length + nums2.length;
36+
if (len % 2 == 0) {
37+
return (helper(nums1, 0, nums2, 0, len / 2) + helper(nums1, 0, nums2, 0, len / 2 + 1)) / 2.0;
6138
}
62-
return String.valueOf()
39+
return helper(nums1, 0, nums2, 0, (len + 1) / 2);
6340
}
64-
*/
6541

42+
private static int helper(int[] nums1, int m, int[] nums2, int n, int k) {
43+
if (m >= nums1.length) return nums2[n + k - 1];
44+
if (n >= nums2.length) return nums1[m + k - 1];
45+
if (k == 1) return Math.min(nums1[m], nums2[n]);
46+
47+
int p1 = m + k / 2 - 1;
48+
int p2 = n + k / 2 - 1;
49+
int mid1 = p1 < nums1.length ? nums1[p1] : Integer.MAX_VALUE;
50+
int mid2 = p2 < nums2.length ? nums2[p2] : Integer.MAX_VALUE;
51+
if (mid1 < mid2) {
52+
return helper(nums1, m + k / 2, nums2, n, k - k / 2);
53+
}
54+
return helper(nums1, m, nums2, n + k / 2, k - k / 2);
55+
}
6656

6757
}

src/me/codebase/leetcode/_004.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package me.codebase.leetcode;
2+
3+
import java.util.Arrays;
4+
5+
/**
6+
* Created by chendong on 2018/1/2.
7+
*/
8+
public class _004 {
9+
10+
11+
public static void main(String[] args) {
12+
int[] A = {1, 3, 4, 6};
13+
int[] B = {2, 4, 5, 8, 9, 10};
14+
int[] C = {1, 2, 3, 4, 4, 5, 6, 8, 9, 10};
15+
// 4.5
16+
System.out.println(Arrays.toString(args));
17+
18+
// System.out.println(findMedianSortedArrays(A, B));
19+
}
20+
21+
22+
}

0 commit comments

Comments
 (0)