20220429, 不通过

|
```javascript /**

  • @param {number[]} nums1
  • @param {number[]} nums2
  • @return {number} */ // 21:25 -> var findMedianSortedArrays = function(nums1, nums2) { const len1 = nums1.length; const len2 = nums2.length; const len = len1 + len2; if (len1 > len2) { return findMedianSortedArrays(nums2, nums1); } let start = 0, end = len1 -1; // while(start < end) { // bug: while(start <= end) { let i = (start + end) >> 2; let j = ((len1 + len2 + 1) >> 2) - i; // const l1 = i < 0 ? -Infinity : nums1[i-1]; // bug: const l1 = i < 1 ? -Infinity : nums1[i-1]; const r1 = i > len1 - 1 ? Infinity : nums1[i]; // const l2 = j < 0 ? -Infinity: nums2[j-1]; // bug const l2 = j < 1 ? -Infinity: nums2[j-1]; const r2 = j > len2 - 1 ? Infinity : nums2[j]; console.log(l1, l2, r1, r2) if(l1 > r2) { start—; } else if(l2 > r2) { end—; } else { return len % 2 === 0 ? ((Math.max(l1, l2) + Math.min(r1, r2)) / 2) : Math.max(l1, l2); } } };

    1. 改成能通过:```javascript
    2. // 21:25 -> 21:57
    3. var findMedianSortedArrays = function(nums1, nums2) {
    4. const len1 = nums1.length;
    5. const len2 = nums2.length;
    6. const len = len1 + len2;
    7. if (len1 > len2) {
    8. return findMedianSortedArrays(nums2, nums1);
    9. }
    10. // let start = 0, end = len1 -1;
    11. let start = 0, end = len1;
    12. let i; let j;
    13. // while(start < end) { // bug:
    14. while(start <= end) {
    15. // let i = (start + end) >> 2;
    16. // let j = ((len1 + len2 + 1) >> 2) - i;
    17. i = (start + end) >> 1;
    18. j = ((len + 1) >> 1) - i;
    19. // const l1 = i < 0 ? -Infinity : nums1[i-1]; // bug:
    20. // const l1 = i < 1 ? -Infinity : nums1[i-1];
    21. const l1 = i === 0 ? -Infinity : nums1[i-1];
    22. // const r1 = i > len1 - 1 ? Infinity : nums1[i];
    23. const r1 = i === len1 ? Infinity : nums1[i];
    24. // const l2 = j < 0 ? -Infinity: nums2[j-1]; // bug
    25. // const l2 = j < 1 ? -Infinity: nums2[j-1];
    26. const l2 = j === 0 ? -Infinity: nums2[j-1];
    27. // const r2 = j > len2 - 1 ? Infinity : nums2[j];
    28. const r2 = j === len2 ? Infinity : nums2[j];
    29. if(l1 > r2) {
    30. // start--;
    31. end = i - 1;
    32. // } else if(l2 > r2) {
    33. }else if(l2 > r1){
    34. // end--;
    35. start = i + 1;
    36. } else {
    37. return len % 2 === 0 ? ((Math.max(l1, l2) + Math.min(r1, r2)) / 2) : Math.max(l1, l2);
    38. }
    39. }
    40. };

    | | —- |