寻找两个正序数组的中位数 Golang leecode_4

这题思路很清晰啊,就是按顺序遍历,然后遍历到中位数的位置 break 出来。打个比方:

对于数组 nums1 = {1, 3},nums2 = {2},我们知道从小到大遍历到第1个(从0开始)的时候就是我们想要的值,于是 定义一个 res 变量开始遍历,flag1 := 0 用来取第一个数组元素,flag2 := 0 用来取第二个数组元素,count 变量用来计数,当 count == (len(num1) + len(num2)) / 2 时,break

对于数组 nums1 = {1, 2},nums2 = {3, 4},我们知道需要遍历到第2个,然后将第2个数和第3个数相加除以2,就是我们想要的结果,于是我想设置一个变量 temp,用来存储 res 赋新值前的值,同理当 count == (len(num1) + len(num2)) / 2 时,break

下面是具体的程序:

package mainimport ("fmt"
)func findMedianSortedArrays(nums1 []int, nums2 []int) float64 {flag := (len(nums1) + len(nums2)) / 2var res float64var temp float64count := 0flag1, flag2 := 0, 0for flag1 < len(nums1) || flag2 < len(nums2) {/* 第一个 if 语句解释:当第一个数组遍历完或为空时,接着(直接)遍历第二个数组,同时下标 flag2 不断后移。第二个 if 语句同理*/if flag1 < len(nums1) && flag2 == len(nums2) {temp = resres = float64(nums1[flag1])flag1++}if flag1 == len(nums1) && flag2 < len(nums2) {temp = resres = float64(nums2[flag2])flag2++}/* 第三个 if 语句解释:当两个数组都还没有遍历完时,需要比较当前两个数组当前下标的值,小的赋值给 res 同时该数组下面往后移一位*/if flag1 < len(nums1) && flag2 < len(nums2) {if nums1[flag1] < nums2[flag2] {temp = resres = float64(nums1[flag1])flag1++} else {temp = resres = float64(nums2[flag2])flag2++}}/* 判断 break 条件 if 语句解释:如果 count == flag ,则到了中位数的位置,(len(nums1)+len(nums2))%2 用来判断是否需要中间两个数相加除以2*/if count == flag && (len(nums1)+len(nums2))%2 == 0 {res = (temp + res) / 2break} else if count == flag && (len(nums1)+len(nums2))%2 == 1 {break}count++}return res
}func main() {/*寻找两个正序数组的中位数给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数 。输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2输入:nums1 = [1,2], nums2 = [3,4]输出:2.50000解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5 */nums1 := []int{}nums2 := []int{3, 4}fmt.Println("中位数为 ", findMedianSortedArrays(nums1[:], nums2[:]))
}

这段代码用时 8ms(击败91.24%用户),内存用了 4.49MB(击败了94.06%用户),对于我这个菜鸡来说还是比较开心的,至少效率还可以。看了一眼官方的,代码用时要16ms 懒得看了,以后再说吧。

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

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

相关文章

C#WPF文本转语音实例

本文介绍C#WPF文本转语音实例 实现方法:使用类库(SpeechSynthesizer )实现的。 一、首先是安装程序包。 二、创建项目 需要添加引用using System.Speech.Synthesis; UI界面 <Windowx:Class="TextToSpeechDemo.MainWindow"xmlns="http://schemas.micr…

前端设计模式之【代理模式】

文章目录 前言介绍例子场景优缺点标题五后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;前端设计模式 &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和技术需要掌握&#xff0c;正在不断努力填补技术短板。(如果出现错误&…

Kafka从安装使用到集成Springboot详细教程

“不积跬步&#xff0c;无以至千里。” 1. 引言 在当今高度互联的技术领域&#xff0c;消息队列成为分布式系统中不可或缺的一部分。Apache Kafka作为一个高性能、持久化、分布式的消息队列系统&#xff0c;备受开发者推崇。这篇文章将从安装到集成Spring的全方位介绍Kafka的使…

阿里面试面试题

文章目录 阿里一面问题1:为什么要用 Redis?有预估 QPS 的提升幅度吗?问题2:Redis 内存不够用怎么办?问题3:是否定义、设计过业务模型?问题4:百万级用户规模服务上线的话需要做什么?问题5:JVM 怎么创建一个对象?问题6:有哪些场景会触发类的加载?阿里二面如果不使用…

计算机组成原理-总线(学习这一篇就够了!)

目录​​​​​​​ 一、总线概述与结构 1.总线原理&#xff1a; 2.总线分类 &#xff08;1&#xff09;片内总线&#xff1a; &#xff08;2&#xff09;I/O总线&#xff1a; &#xff08;3&#xff09;系统总线&#xff1a; 3.总线的特性 &#xff08;1&#xff09;…

【LeetCode】136. 只出现一次的数字

136. 只出现一次的数字 难度&#xff1a;简单 题目 给你一个 非空 整数数组 nums &#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法来解决此问题&#xff0c;且该算法只使用…

Excel表格密码解密:简易操作指南。

很多人都遇到过忘记Excel表格密码或无法编辑的情况。下面是解决此问题的最简单的办法&#xff1a; 具体步骤如下&#xff1a;1.百度搜索【密码帝官网】&#xff0c;2.点击“立即开始”在用户中心上传需要解密的文件稍等片刻就能找找回密码。 密码帝官网是一个安全、简单易操作、…

Angular 由一个bug说起之二:trackBy的一点注意事项

trackBy是angualr优化项目性能的一种方法, 通过返回一个具有绑定性的唯一值, 比如id&#xff0c;手机号&#xff0c;身份证号之类的&#xff0c;来让angular能够跟踪数组的项目&#xff0c;根据数据的变化来重新生成DOM, 这样就节约了性能。 但是如果是使用ngFor循环组件&…

如何下载 Apache + PHP + Mysql 集成安装环境并结合内网穿透工具实现公网访问内网服务

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;网络奇遇记、Cpolar杂谈 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. WampServer下载安装二. WampServer启动三. 安装cpolar内网穿透3.1 注册账号…

2023年香港优才计划申请确实火爆,但请冷静!结合个人条件再考虑!

2023年香港优才计划申请确实火爆&#xff0c;但请冷静&#xff01;结合个人条件再考虑&#xff01; 自从香港优才计划实施取消年度限额&#xff0c;为期两年的优化措施以后&#xff0c;无论是申请数量还是获批数量都猛增。今年第二季度的获批量与第一季度的2,073宗相比&#xf…

RabbitMQ 安装及配置

前言 当你准备构建一个分布式系统、微服务架构或者需要处理大量异步消息的应用程序时&#xff0c;消息队列就成为了一个不可或缺的组件。而RabbitMQ作为一个功能强大的开源消息代理软件&#xff0c;提供了可靠的消息传递机制和灵活的集成能力&#xff0c;因此备受开发人员和系…

protobuf---编码原理

1. Varint 编码 原理 Varint 是一种紧凑的表示数字的方法。它用一个或多个字节来表示一个数字&#xff0c;值越小的数字使用越少的字节数。这能减少用来表示数字的字节数。 Varint 中的每个字节&#xff08;最后一个字节除外&#xff09;都设置了最高有效位&#xff08;msb&a…

redisson支持高并发的RBucket

作用&#xff1a;RBucket桶可存储任意对象&#xff0c;可在高并发场景下进行唯一更新。 示例&#xff1a;创建20个线程并发更新桶对象&#xff0c;只有一个执行了更新操作。 先添加redisson的依赖。 <dependency><groupId>org.redisson</groupId><arti…

c# - - - Application.StartupPath(程序安装目录)和Environment.CurrentDirectory(程序工作目录)

Application.StartupPath 应用程序的安装目录&#xff0c;不会改变。 在C:\Users\Administrator\source\repos\ConsoleApp6\bin\Debug目录中&#xff0c;运行ConsoleApp6.exe。 安装目录为&#xff1a;C:\Users\Administrator\source\repos\ConsoleApp6\bin\Debug 在C:\Users…

开发板和电脑相互ping,电脑可以ping开发板,但是开发板ping不通电脑

开发板和电脑相互ping&#xff0c;电脑可以ping开发板&#xff0c;但是开发板ping不通电脑 可能有以下几种原因&#xff1a; 电脑的防火墙设置拦截了开发板的ping请求&#xff0c;需要关闭或者配置防火墙&#xff0c;允许开发板的IP地址访问。开发板和电脑的IP地址不在同一网段…

​软考-高级-系统架构设计师教程(清华第2版)【第5章 软件工程基础知识(190~233)-思维导图】​

软考-高级-系统架构设计师教程&#xff08;清华第2版&#xff09;【第5章 软件工程基础知识&#xff08;190~233&#xff09;-思维导图】 课本里章节里所有蓝色字体的思维导图

ubuntu xrdp远程登录一直弹出Authentication required. System policy prevents WiFi scans

windows远程登录以后想要连接一下wifi&#xff0c;一定弹出Authentication required&#xff0c;关都关不掉&#xff0c;wifi也连不上。 使用以下方法后完美解决 sudo vi /etc/polkit-1/localauthority/50-local-d/network.pkla 加入如下内容&#xff1a; [Allow Wifi Scan…

050-第三代软件开发-软件部署脚本(二)

第三代软件开发-软件部署脚本(二) 文章目录 第三代软件开发-软件部署脚本(二)项目介绍软件部署脚本(二) 关键字&#xff1a; Qt、 Qml、 bash、 shell、 脚本 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QML&#xff08;Qt Meta-Object Languag…

以程序员的身份使用curl获取速卖通详情

作为一名程序员&#xff0c;我们经常需要和各种API接口打交道。在电商领域&#xff0c;速卖通是一个非常受欢迎的平台。本文将介绍如何使用curl工具通过速卖通的API接口获取商品详情。 一、准备工作 在开始之前&#xff0c;请确保您已完成以下准备工作&#xff1a; 注册速卖…

Django视图层解析

Django视图&#xff08;View&#xff09;是Django Web框架中负责处理HTTP请求和返回HTTP响应的组件。视图是一段Python代码&#xff0c;接收HTTP请求作为输入&#xff0c;处理请求并返回HTTP响应作为输出。Django视图的主要目的是实现Web应用程序的业务逻辑&#xff0c;将模型和…