|
2 | 2 |
|
3 | 3 | public class Main {
|
4 | 4 |
|
5 |
| - public double findMedianSortedArrays(int[] nums1, int[] nums2) { |
6 |
| - int len1 = nums1.length; |
7 |
| - int len2 = nums2.length; |
8 |
| - int total = len1 + len2; |
9 |
| - if (total % 2 == 0) { |
10 |
| - return (findKth(nums1, nums2, 0, len1 - 1, 0, len2 - 1, total/2) + |
11 |
| - findKth(nums1, nums2, 0, len1 - 1, 0, len2 - 1, total/2 + 1))/2.0f; |
12 |
| - } else { |
13 |
| - return findKth(nums1, nums2, 0, len1 - 1, 0, len2 - 1, total/2 + 1); |
| 5 | + public boolean isValid(String s) { |
| 6 | + int[] stack = new int[s.length()]; |
| 7 | + int index = 0; |
| 8 | + for (int i = 0; i < s.length(); i++) { |
| 9 | + switch (s.charAt(i)) { |
| 10 | + case '(': |
| 11 | + case '[': |
| 12 | + case '{': |
| 13 | + stack[index++] = i; |
| 14 | + break; |
| 15 | + case ')': |
| 16 | + if (index == 0 || s.charAt(stack[--index]) != '(') { |
| 17 | + return false; |
| 18 | + } |
| 19 | + break; |
| 20 | + case ']': |
| 21 | + if (index == 0 || s.charAt(stack[--index]) != '[') { |
| 22 | + return false; |
| 23 | + } |
| 24 | + break; |
| 25 | + case '}': |
| 26 | + if (index == 0 || s.charAt(stack[--index]) != '{') { |
| 27 | + return false; |
| 28 | + } |
| 29 | + break; |
| 30 | + } |
14 | 31 | }
|
| 32 | + return index == 0; |
15 | 33 | }
|
16 | 34 |
|
17 |
| - public double findKth(int[] nums1, int[] nums2, int start1, int end1, int start2, int end2, int k) { |
18 |
| - int len1 = end1 - start1 + 1; |
19 |
| - int len2 = end2 - start2 + 1; |
20 |
| - if (len1 > len2) { |
21 |
| - return findKth(nums2, nums1, start2, end2, start1, end1, k); |
22 |
| - } |
23 |
| - if (len1 == 0) { |
24 |
| - return nums2[start2 + k - 1]; |
25 |
| - } |
26 |
| - if (k == 1) { |
27 |
| - return Math.min(nums1[start1], nums2[start2]); |
28 |
| - } |
29 |
| - int ia = Math.min(k/2, len1); |
30 |
| - int ib = k - ia; |
31 |
| - if (nums1[start1 + ia - 1] > nums2[start2 + ib - 1]) { |
32 |
| - return findKth(nums1, nums2, start1, end1, start2 + ib, end2, k - ib); |
33 |
| - } else if (nums1[start1 + ia - 1] < nums2[start2 + ib - 1]) { |
34 |
| - return findKth(nums1, nums2, start1 + ia, end1, start2, end2, k - ia); |
35 |
| - } else { |
36 |
| - return nums1[start1 + ia - 1]; |
37 |
| - } |
38 |
| - } |
39 |
| - |
40 |
| - |
41 | 35 | public static void main(String[] args) {
|
42 | 36 |
|
43 | 37 | }
|
|
0 commit comments