Leetcode 4 寻找两个正序数组的中位数

题目地址:https://leetcode-cn.com/problems/median-of-two-sorted-arrays/

难度:困难

基本思路:

  • 将两个有序链表合并,然后根据中位数定义查找
  • 分段折半查找

合并链表(low的一笔)

复制代码
public class Solution {
    public static void main(String[] args) {
        Solution s = new Solution();
        double ans = s.findMedianSortedArrays(new int[]{1,3,4}, new int[]{2});
        System.out.println(ans);
    }
    public double findMedianSortedArrays(int[] nums1, int[] nums2) {
        // 双指针合并数组
        int len1 = nums1.length, len2 = nums2.length, n = len1 + len2;
        int[] res = new int[n];
        int p = 0, q = 0, k = 0;
        if(len1 == 0 && len2 != 0){
            res = nums2;
        }else if(len1 != 0 && len2 == 0){
            res = nums1;
        }else {
            while (p < len1 && q < len2) {
                if (nums1[p] > nums2[q]) {
                    res[k++] = nums2[q++];
                } else if (nums1[p] == nums2[q]) {
                    res[k++] = nums2[q++];
                    res[k++] = nums1[p++];
                } else {
                    res[k++] = nums1[p++];
                }
            }
            while (p < len1) {
                res[k++] = nums1[p++];
            }
            while (q < len2) {
                res[k++] = nums2[q++];
            }
            int i = 0;
            while (i++ < res.length) {
                System.out.print(res[i - 1] + ",");
            }
        }
        if (res.length % 2 == 0) {
            return (double) (res[res.length / 2] + res[(res.length / 2) - 1]) / 2;
        } else {
            return (double) res[(res.length - 1) / 2];
        }
    }
}
复制代码

分段折半查找(今天没想明白,想出来更新)

 

posted @   BigBender  阅读(40)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示
主题色彩