前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >rust leetcode median-of-two-sorted-arrays

rust leetcode median-of-two-sorted-arrays

作者头像
用户2436820
发布2019-11-20 21:28:35
3140
发布2019-11-20 21:28:35
举报
文章被收录于专栏:奔跑的蛙牛技术博客

每日小刷

median-of-two-sorted-arrays/

Runtime

Memory

0ms

2.6m

代码语言:javascript
复制
use std::cmp;
impl Solution {
    // 2i + 2j = m+n
    // i = (m+n)/2 - j;
    // (m+n)/2>i
    // n>m 保证j > 0
    pub fn find_median_sorted_arrays(nums1: Vec<i32>, nums2: Vec<i32>) -> f64 {
        let mut iMin = 0;
        let mut iMax = 0;
        let mut m: Vec<i32>;
        let mut n: Vec<i32>;

        if nums1.len() > nums2.len() {
            m = nums2;
            n = nums1;
        } else {
            m = nums1;
            n = nums2;
        }
        iMax = m.len();
        // 二分查找符合条件的变量
        while iMin <= iMax {
            println!("iMin:{:?},iMax:{:?}", iMin, iMax);
            let i = (iMin + iMax) / 2;
            let j = (m.len() + n.len() + 1) / 2 - i;
            if i > iMin && n[j] < m[i - 1] {
                iMax = i - 1;
            } else if i < iMax && m[i] < n[j - 1] {
                iMin = i + 1;
            } else {
                // perfect
                let mut left_max = 0;
                // get left_max
                if i == 0 {
                    left_max = n[j - 1];
                } else if j == 0 {
                    left_max = m[i - 1];
                } else {
                    left_max = cmp::max(n[j - 1], m[i - 1]);
                }

                if (m.len() + n.len()) % 2 == 1 {
                    return left_max as f64;
                }
                let mut right_min = 0;

                if i == m.len() {
                    right_min = n[j];
                } else if j == n.len() {
                    right_min = m[i];
                } else {
                    right_min = cmp::min(n[j], m[i]);
                }
                return (left_max as f64 + right_min as f64) / 2.0;
            }
        }
        0.0
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 每日小刷
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档