每日算法(第三期)

news/2024/11/15 3:00:55/

2023年5月17日

先回顾一下昨天的算法题,及答案

题目:寻找两个有序数组的中位数

给定两个大小分别为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。

你可以假设 nums1 和 nums2 不会同时为空。

示例 1:

nums1 = [1, 3] nums2 = [2]

则中位数是 2.0

示例 2:

nums1 = [1, 2] nums2 = [3, 4]

则中位数是 (2 + 3)/2 = 2.5

解答:

这道题可以使用二分查找的思想来解决,具体做法如下:

  1. 将两个有序数组合并为一个有序数组,这可以通过双指针法来实现,具体做法是维护两个指针 i 和 j,分别指向 nums1 和 nums2 的开头,每次比较两个指针所指的元素的大小,将较小的那个放入结果数组中,并将对应指针向后移动一位,直到遍历完两个数组为止。

  2. 如果数组的长度为奇数,则中位数是合并后数组的中间元素;如果数组的长度为偶数,则中位数是合并后数组中间两个元素的平均值。

具体实现代码如下:

function findMedianSortedArrays(nums1, nums2) {const len1 = nums1.length, len2 = nums2.length;const len = len1 + len2;const nums = new Array(len);let i = 0, j = 0, k = 0;while (i < len1 && j < len2) {if (nums1[i] <= nums2[j]) {nums[k++] = nums1[i++];} else {nums[k++] = nums2[j++];}}while (i < len1) {nums[k++] = nums1[i++];}while (j < len2) {nums[k++] = nums2[j++];}if (len % 2 === 0) {return (nums[len / 2 - 1] + nums[len / 2]) / 2;} else {return nums[Math.floor(len / 2)];}
}

这个算法的时间复杂度为 O(m+n),并不满足题目要求,但是这里只是为了简化代码实现,如果要达到题目要求的时间复杂度 O(log(m+n)),可以使用类似二分查找的方法来优化代码实现。

2023年5月18日

题目:如何用一个数组来实现一个队列? 上面问题的答案会在第二天的公众号推文中公布,大家可以关注公众号,第一时间获得推送内容。

学习不打烊,充电加油只为遇到更好的自己,每天早上9点纯手工发布面试题(死磕自己,愉悦大家) 希望大家在这浮夸的程序员圈里保持冷静,每天坚持花20分钟来学习与思考,在千变万化,类库层出不穷的今天,不要等到找工作时才狂刷题,提倡每日学习。


http://www.ppmy.cn/news/69991.html

相关文章

SpringBoot整合MyBatis-Plus实现增删改查

简介 MyBatis-Plus (opens new window)的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 特性 无侵入&#xff1a;只做增强不做改变&#xff0c;引入它不会对现有工程产生影响&#xff0c;如丝般顺滑损耗小&#xff1a;启…

【英】考虑多能负荷不确定性的区域综合能源系统鲁棒规划(MatlabPython代码)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

DC-9通关详解

信息收集 漏洞发现 result.php处存在sql注入 sqlmap跑信息 python sqlmap.py -u http://192.168.45.146/results.php --data search1 -D users -T UserDetails --dump 拿了几个尝试登录都无效 ssh尝试登录直接拒绝了 再看Staff表 查哈希 进后台 多了一个添加记录的功能 没啥…

分享一个图片展示特效

先上效果图&#xff1a; 备注&#xff1a;这个效果图太大了&#xff0c;压缩了一下效果有点不咋好看。感兴趣同学们可以自己运行代码看一下&#xff0c;保证不会失望~ 再上代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta cha…

C嘎嘎~~[类 下篇 之 日期类的实现]

类 下篇 之 日期类的实现 6.const成员6.1 const成员的引入6.2const成员的概念 7.日期类的实现 6.const成员 6.1 const成员的引入 class Date { public:// 构造函数Date(int year 2023, int month 5, int day 5){_year year;_month month;_day day;}void Print(){cout &…

哈工大C语言大作业-学生成绩管理系统

哈工大C语言大作业-学生成绩管理系统 完整项目地址&#xff1a;https://github.com/944613709/Student-Performance-Management-System-ByC 说明 l 设计了学生成绩管理系统&#xff0c;来实现对于学生数据的录入统计等各个功能l 进入主菜单之前执行音效播放l menu主菜单中显…

卷积神经网络(CNN):基于PyTorch的遥感影像、无人机影像的地物分类、目标检测、语义分割和点云分类

我国高分辨率对地观测系统重大专项已全面启动&#xff0c;高空间、高光谱、高时间分辨率和宽地面覆盖于一体的全球天空地一体化立体对地观测网逐步形成&#xff0c;将成为保障国家安全的基础性和战略性资源。随着小卫星星座的普及&#xff0c;对地观测已具备多次以上的全球覆盖…

基于AT89C51单片机的温度控制系统报警器

点击链接获取Keil源码与Project Backups仿真图&#xff1a; https://download.csdn.net/download/qq_64505944/87771724?spm1001.2014.3001.5503 源码获取 单片机读取温度传感器当前的温度值并在LCD液晶显示屏上的第一行显示当前的温度值&#xff0c;单片机读取按键状态并通过…