(Java)心得:LeetCode——4.寻找两个正序数组的中位数

一、原题

给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。

算法的时间复杂度应该为 O(log (m+n)) 。

示例 1:

输入:nums1 = [1,3], nums2 = [2]
输出:2.00000
解释:合并数组 = [1,2,3] ,中位数 2

示例 2:

输入:nums1 = [1,2], nums2 = [3,4]
输出:2.50000
解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5

二、心得

        今天又是元气满满的一天,fighting!

        题目的思路已经很清晰了,先将两个数组合二为一,至于怎么合,八仙过海,各显神通,(我比较菜,老老实实地合吧,(●'◡'●)),总之要正序排序(倒序排序也一样的),然后再取新合成的数组的中位数,即下角标为中位数的值。

        如何取?很简单,我教你啊~ 

        设 length 为新数组的长度,length % 2 如果等于0,则表明元素是偶数个,只需取 length / 2 - 1length / 2 对应的值,相加除以二即可。若不等于0,则表明元素是奇数个,则取 length / 2 对应的值。

        直接上结果(今日手不废):

class Solution {public double findMedianSortedArrays(int[] nums1, int[] nums2) {int length = nums1.length + nums2.length;int[] nums = new int[length];int i = 0, j = 0;while(i < nums1.length && j < nums2.length){nums[i + j] = nums1[i];i ++;nums[i + j] = nums2[j];j ++;}if(nums1.length > nums2.length){while(i < nums1.length){nums[i + j] = nums1[i];i ++;}}else if(nums1.length < nums2.length){while(j < nums2.length){nums[i + j] = nums2[j];j ++;}}Arrays.sort(nums);return length % 2 == 0 ? 0.5*(nums[length / 2 - 1] + nums[length / 2]) : nums[length / 2];}
}

        先定义一个长度为 nums1 和 nums2 两者之和的新数组 nums,使用 while(),找到 nums1 和 nums2 共有的个数,依次录入新数组 nums 中,其中 i ++;j ++; 保证了 nums[i + j] 按下角标次序依次存入。然后再分两种情况存入剩余未被存入的元素。用 Arrays.sort(nums); 正序排序数组的元素,最后根据元素个数返回对应的中位数(A ? B : C,活学活用,嘿嘿)。通俗版就是:

if(length % 2 == 0){return (0.5*(nums[length / 2 - 1] + nums[length / 2]));
}else{return nums[length / 2];
}

        (今天的题没难度啊?提交。。。啊?(⊙ˍ⊙)击败16.93%使用Java的用户,原来我还是太小白,至于其它的算法,我再去研究研究,告辞~)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/835378.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2010年认证杯SPSSPRO杯数学建模D题(第一阶段)服务网点的分布全过程文档及程序

2010年认证杯SPSSPRO杯数学建模 D题 服务网点的分布 原题再现&#xff1a; 服务网点、通讯基站的设置&#xff0c;都存在如何设置较少的站点&#xff0c;获得较大效益的问题。通讯基站的覆盖范围一般是圆形的&#xff0c;而消防、快餐、快递服务则受到道路情况和到达时间的限…

[图解]实现领域驱动设计译文暴露的问题01

0 00:00:00,430 --> 00:00:03,470 今天呢&#xff0c;我们来说一个主题 1 00:00:03,810 --> 00:00:04,041 2 00:00:04,041 --> 00:00:05,430 我们来谈一谈 3 00:00:05,960 --> 00:00:07,710 实现领域驱动设计 4 00:00:09,120 --> 00:00:11,070 这本书的中译本…

Android使用Chaquo来运行Python的librosa的相关代码【有详细案例教程】

在某些情况下&#xff0c;我们可能需要在android上运行python的代码&#xff0c;那么常见的解释器有很多&#xff0c;目前比较成熟的就是chaquo&#xff0c;它适配的第三方机器学习的库很多&#xff0c;下面是它的简单使用教程 1.环境的搭建 1.1 在Android studio中新建安卓工…

社交媒体数据恢复:飞书

飞书数据恢复过程包括以下几个步骤&#xff1a; 确认数据丢失&#xff1a;首先要确认数据是否真的丢失&#xff0c;有时候可能只是被隐藏或者误操作删除了。 检查回收站&#xff1a;飞书中删除的文件会默认保存在回收站中&#xff0c;用户可以通过进入回收站找到被删除的文件&…

springboot整合redis多数据源(附带RedisUtil)

单数据源RedisUtil(静态) 单数据源RedisUtil,我这里implements ApplicationContextAware在setApplicationContext注入redisTemplate,工具类可以直接类RedisUtil.StringOps.get()使用 package com.vehicle.manager.core.util;import com.alibaba.fastjson.JSON; import lombok.e…

如何向Linux内核提交开源补丁?

2021年&#xff0c;我曾经在openEuler社区上看到一项改进Linux内核工具的需求&#xff0c;因此参与过Linux内核社区的开源贡献。贡献开源社区的流程都可以在内核社区文档中找到&#xff0c;但是&#xff0c;单独学习需要一个较长的过程&#xff0c;新手难以入门&#xff0c;因此…

【专用】C# ArrayList的用法总结

System.Collections.ArrayList类是一个特殊的数组。通过添加和删除元素&#xff0c;就可以动态改变数组的长度。 一、优点 1. 支持自动改变大小的功能 2. 可以灵活的插入元素 3. 可以灵活的删除元素 4. 可以灵活访问元素 二、局限性 跟一般的数组比起来&#xff0c;速度…

AI 数据观 | TapData Cloud + MongoDB Atlas:大模型与 RAG 技术有机结合,落地实时工单处理智能化解决方案

本篇为「AI 数据观」系列文章第二弹&#xff0c;在这里&#xff0c;我们将进一步探讨 AI 行业的数据价值。以 RAG 的智能工单应用场景为例&#xff0c;共同探索如何使用 Tapdata Cloud MongoDB Atlas 实现具备实时更新能力的向量数据库&#xff0c;为企业工单处理的智能化和自…

[C/C++] -- 大数的加减法

大数加减法的问题主要产生于计算机基本数据类型的表示范围限制。通常情况下&#xff0c;计算机采用有限位数的数据类型&#xff08;如int、long&#xff09;来表示整数&#xff0c;这些数据类型的表示范围有限&#xff0c;无法表示超出范围的大整数。 例如超过了long类型的表示…

【JavaScript】内置对象 - 数组对象 ⑤ ( 数组转字符串 | toString 方法 | join 方法 )

文章目录 一、数组转字符串1、数组转字符串 ( 逗号分割 ) - toString()2、数组转字符串 ( 自定义分割符 ) - join() Array 数组对象参考文档 : https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array 一、数组转字符串 1、数组转字符串 ( 逗…

指针(脑图梳理)

今天让我们来梳理一下指针都有哪些概念吧 这个脑图是整理的一些指针相关知识的概念&#xff0c;希望对大家有帮助

四川鸿学金联13-20Kjava社招面经

【公司内部情况】 公司创始人是源码时代出来的&#xff0c;新业务大量招人&#xff0c;总共有三面&#xff0c;技术面基本全程吊打面试官&#xff0c;最后因为说我的期望薪资和预算差太多&#xff0c;因为我投的是15-25K&#xff0c;貌似最高20K 【面试情况】 先是做笔试&…

Web前端开发 小实训(三) 商品秒杀小练习

学生能够在本次实训中完成商品秒杀页面的基本逻辑 任务要求 能够实现某一个商品的秒杀&#xff0c;在倒计时结束后不再进行秒杀。 操作步骤 1、打开预设好的页面 <html><head><meta charset"utf-8"><title>秒杀</title><link …

嵌入式学习——51单片机——(按键、中断)day17

1. 按键程序 1.1 主函数 #include <reg51.h> #include "digit.h" #include "key.h"void delay(int n) {while (n--); }int main(void) {int cnt 0;init_digit();init_key();while (1){ if (2 key_pressed()){cnt;delay(0x5fff);}show_number(cnt…

python中如何把list变成字符串

python中如何把list变成字符串&#xff1f;方法如下&#xff1a; python中list可以直接转字符串&#xff0c;例如&#xff1a; data ["hello", "world"] print(data1:,str(data)) 得到结果&#xff1a; (data1:, "[hello, world]") 这里将整个…

[0511] Llamafile 和 Bun 更新 | 美国立法限制 AI 模型出口 | M4单核跑分超 i9 最新旗舰

目录 Llamafile 发布 v0.8.4;可在 CLI 直接生成 embeddingBun 发布 v1.1.8美国立法限制 AI 模型的出口M4 单核性能GB单线程跑分超过 i9 最新旗舰 Llamafile 发布 v0.8.4;可在 CLI 直接生成 embedding Lllamfile 基于 Lllama.cpp&#xff0c;是一个快捷运行本地模型的方案。 L…

视频号小店究竟有什么秘密,值得商家疯狂入驻,商家必看!

大家好&#xff0c;我是电商花花。 我们都知道视频号和抖音本身都是一个短视频平台&#xff0c;但是随着直播电商的发展&#xff0c;背后的流量推动逐步显露出强大的红利市场和变现机会。 视频号小店流量大和赚钱之外&#xff0c;还非常适合普通人创业。 这也使得越来越多的…

easypoi动态表头导出数据

需求&#xff1a;动态导出某年某月用户和用户评分数据信息&#xff0c;表头(序号、姓名、用户姓名)&#xff0c;数据(所有用户对应的评分以及平均分)&#xff1b; 分析&#xff1a;1、表头除过序号、姓名&#xff0c;用户姓名要动态生成&#xff1b; 2、用户评分信息要和表头中…

C#爬虫爬取某东商品信息

&#x1f3c6;作者&#xff1a;科技、互联网行业优质创作者 &#x1f3c6;专注领域&#xff1a;.Net技术、软件架构、人工智能、数字化转型、DeveloperSharp、微服务、工业互联网、智能制造 &#x1f3c6;欢迎关注我&#xff08;Net数字智慧化基地&#xff09;&#xff0c;里面…

【赠书活动第4期】《Rust编程与项目实战》

赠书活动 《Rust编程与项目实战》免费赠书 3 本&#xff0c; 收到赠书之后&#xff0c;写一篇 本书某一节内容 的学习博客文章。 可在本帖评论中表示参加&#xff0c;即可获得赠书&#xff0c;先到先得。学习心得博客链接&#xff0c;后面有空发上来。 赠书截止日期为送出3…