Skip to content

Commit 3fc1e95

Browse files
committed
fix
1 parent 8f7af9a commit 3fc1e95

File tree

2 files changed

+85
-2
lines changed

2 files changed

+85
-2
lines changed

src/me/codebase/leetcode/_004.java

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

3-
import java.util.Arrays;
4-
53
/**
64
* Created by chendong on 2018/1/2.
75
*/
@@ -14,8 +12,44 @@ public static void main(String[] args) {
1412
int[] C = {1, 2, 3, 4, 4, 5, 6, 8, 9, 10};
1513
// 4.5
1614

15+
Solution solution = new Solution();
16+
double median = solution.findMedianSortedArrays(A, B);
17+
System.out.println(median);
1718
// System.out.println(findMedianSortedArrays(A, B));
1819
}
1920

21+
private static double findMedian(int[] A, int[] B){
22+
23+
24+
25+
return 0;
26+
}
27+
28+
29+
static class Solution {
30+
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
31+
int len = nums1.length + nums2.length;
32+
if (len % 2 == 0) {
33+
return (helper(nums1, 0, nums2, 0, len / 2) + helper(nums1, 0, nums2, 0, len / 2 + 1)) / 2.0;
34+
}
35+
return helper(nums1, 0, nums2, 0, (len + 1) / 2);
36+
}
37+
38+
private int helper(int[] nums1, int m, int[] nums2, int n, int k) {
39+
if (m >= nums1.length) return nums2[n + k - 1];
40+
if (n >= nums2.length) return nums1[m + k - 1];
41+
if (k == 1) return Math.min(nums1[m], nums2[n]);
42+
43+
int p1 = m + k / 2 - 1;
44+
int p2 = n + k / 2 - 1;
45+
int mid1 = p1 < nums1.length ? nums1[p1] : Integer.MAX_VALUE;
46+
int mid2 = p2 < nums2.length ? nums2[p2] : Integer.MAX_VALUE;
47+
if (mid1 < mid2) {
48+
return helper(nums1, m + k / 2, nums2, n, k - k / 2);
49+
}
50+
return helper(nums1, m, nums2, n + k / 2, k - k / 2);
51+
}
52+
}
53+
2054

2155
}

src/me/codebase/leetcode/_554.java

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package me.codebase.leetcode;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
/**
7+
* Created by chendong on 2018/1/5.
8+
*/
9+
public class _554 {
10+
11+
/*
12+
input:
13+
[[1,2,2,1],
14+
[3,1,2],
15+
[1,3,2],
16+
[2,4],
17+
[3,1,2],
18+
[1,3,1,1]]
19+
output:
20+
2
21+
*/
22+
23+
public static void main(String[] args) {
24+
List<Integer[]> input = new ArrayList<>();
25+
input.add(new Integer[]{1, 2, 2, 1});
26+
input.add(new Integer[]{3, 1, 2});
27+
input.add(new Integer[]{1, 3, 2});
28+
input.add(new Integer[]{2, 4});
29+
input.add(new Integer[]{3, 1, 2});
30+
input.add(new Integer[]{1, 3, 1, 1});
31+
solution(input);
32+
}
33+
34+
private static int solution(List<Integer[]> input) {
35+
int result = 0;
36+
List<Integer[]> points = new ArrayList<>(input.size());
37+
for (Integer[] breaks : input) {
38+
List<Integer> list = new ArrayList<>();
39+
int point = 0;
40+
for (Integer integer : breaks) {
41+
point += integer;
42+
list.add(point);
43+
}
44+
points.add(list.toArray(new Integer[list.size()]));
45+
}
46+
47+
return result;
48+
}
49+
}

0 commit comments

Comments
 (0)