当前位置: 首页 > news >正文

日本门户网站有哪些福州百度推广优化排名

日本门户网站有哪些,福州百度推广优化排名,信息公司网站建设方案 游戏,天津做网站费用文章目录 写在前面Tag题目来源题目解读解题思路方法一:合并排序方法二:双指针方法三:原地操作-从前往后方法四:原地操作-从后往前 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章…

文章目录

  • 写在前面
  • Tag
  • 题目来源
  • 题目解读
  • 解题思路
    • 方法一:合并排序
    • 方法二:双指针
    • 方法三:原地操作-从前往后
    • 方法四:原地操作-从后往前
  • 写在最后

写在前面

本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更……

专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结构等内容进行回顾与总结,文章结构大致如下,部分内容会有增删:

  • Tag:介绍本题牵涉到的知识点、数据结构;
  • 题目来源:贴上题目的链接,方便大家查找题目并完成练习;
  • 题目解读:复述题目(确保自己真的理解题目意思),并强调一些题目重点信息;
  • 解题思路:介绍一些解题思路,每种解题思路包括思路讲解、实现代码以及复杂度分析;
  • 知识回忆:针对今天介绍的题目中的重点内容、数据结构进行回顾总结。

Tag

【双指针】【原地操作-从前往后】【原地操作-从后往前】【排序】【数组】


题目来源

面试经典 150 题——88. 合并两个有序数组


题目解读

给定两个有序数组 nums1nums2,现在需要合并两个数组到 nums1 中,nums1 中已经预留了合并的位置。


解题思路

方法一:合并排序

将数组nums2 合并到 nums1 数组中的空位上,再利用 sort() 函数进行排序。

时间复杂度: O ( ( m + n ) l o g ( m + n ) ) O((m+n)log(m+n)) O((m+n)log(m+n)),快速排序的时间复杂度。
空间复杂度: O ( l o g ( m + n ) ) O(log(m+n)) O(log(m+n)),快速排序占用的空间。

方法二:双指针

维护一个临时数组,用来存放合并后的数组。

使用两个指针 i,j,分别指向两数组首元素,迭代比较 ij 位置处元素大小,将小的元素依次存入临时数组。

最后,将临时数组中元素移植到 nums1 数组中。

时间复杂度 O ( m + n ) O(m+n) O(m+n)
空间复杂度 O ( m + n ) O(m+n) O(m+n),因为需要一个临时数组,大小为 m + n m+n m+n

方法三:原地操作-从前往后

首先,重新定义一下双指针 ij 的含义,两指针分别表示指向数组 nums1nums2 当前没有使用过的最小的元素,i 也表示当前最小元素将要放置的位置。

在方法二中,我们之所以使用了一个临时数组来存放较小的数字,是因为我们从前往后枚举比较两指针指向的元素得到较小值,如果直接合并到 nums1 数组中,可能会覆盖掉 nums1 中接下来将要比较的数字(这也是原地操作删除有序数组中的重复元素的思想,具体内容可见 图解【原地操作】删除有序数组中的重复元素)。

直接合并有问题,那么我们进行交换处理保留较大数,即交换 nums1[i]nums2[j],交换了之后,我们将较小的数放置在数组 nums1i 位置处,较大的数放置在数组 nums2j 位置处。这时候还需要对数组 nums2 进行排序,每次交换数字之后都要进行排序操作。

因为我们的双指针都是指向当前数组中最小的数字,交换操作有可能破坏数组 nums2 的升序结构。

下面以图示形式进行演示:

(1)双指针从 0 位置开始;

(2)nums1[0] < nums2[0],右移 i 指针;

(3)nums1[1] = nums2[0],右移 i 指针;

(4)nums2[0] < nums1[2],交换数组中两元素;

(5)nums2 数组的升序结构被破坏,需要进行升序排序;

(6)nums1[2] = nums2[0],右移 i 指针;

(7)数组 nums1 中前半部分数位已经填充完毕,后半部分占位符使用数组 nums2 填充,当前位置填充完毕之后,同时右移两指针;如此迭代填充,直至 j 指针越界,合并两个有序数组完成!


实现代码

class Solution {
public:void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {int i = 0, j = 0;while (j < n) {if (i >= m) {nums1[i] = nums2[j++];}else {if (nums1[i] > nums2[j]) {swap(nums1[i], nums2[j]);}sort(nums2.begin(), nums2.end());}++i;}}
};

时间复杂度: O ( m a x ( m , n l o g n ) ) O(max(m, nlogn)) O(max(m,nlogn))

空间复杂度: O ( n l o g n ) O(nlogn) O(nlogn),快速排序占用的空间。

方法四:原地操作-从后往前

现在考虑从后往前处理,具体地维护三个指针,i 指向数组 nums1 比较元素的末尾即 m-n-1 位置,j 指针指向数组 nums2 比较元素的末尾即 n-1 位置,k 指针指向数组 nums1 的末尾即 m-1 位置。

我们比较 nums1[i]nums2[j] 元素大小,将较大的元素放置在数组 nums1k 位置处。

下面以图示形式进行演示:

(1)三指针初始化;

(2)nums1[2] < nums2[2] ,将较大的 nums2[2] 放置在 tail 处;

(3)jtail 指针分别左移一个单位,为下次比较做准备;

(4) nums1[2] < nums2[1] ,将较大的 nums2[1] 放置在 tail 处;

(5)jtail 指针分别左移一个单位,为下次比较做准备;

(6)nums1[2] = nums2[0] ,将 nums1[1] 放置在 tail 处;

(7)itail 指针分别左移一个单位,为下次比较做准备;

(8)nums1[1] < nums2[0] ,将较大的 nums2[0] 放置在 tail 处;

(9)jtail 指针分别左移一个单位,j 指针越界,原地操作结束,数组 nums1 为最后合并后的数组。


实现代码

class Solution {
public:void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {int i = m - 1, j = n - 1, k = m + n - 1;while (i >= 0 && j >= 0) {if (nums2[j] > nums1[i]) {nums1[k--] = nums2[j--];}else {nums1[k--] = nums1[i--];}}while (j >= 0) {nums1[k--] = nums2[j--];}}
};

时间复杂度: O ( m + n ) O(m+n) O(m+n)

空间复杂度: O ( 1 ) O(1) O(1),原地操作,仅仅使用了三个指针变量。


写在最后

如果文章内容有任何错误或者您对文章有任何疑问,欢迎私信博主或者在评论区指出 💬💬💬。

如果大家有更优的时间、空间复杂度方法,欢迎评论区交流。

最后,感谢您的阅读,如果感到有所收获的话可以给博主点一个 👍 哦。


文章转载自:
http://scarp.sfwd.cn
http://vibriocidal.sfwd.cn
http://incompleteness.sfwd.cn
http://farad.sfwd.cn
http://actuate.sfwd.cn
http://expunge.sfwd.cn
http://dejecta.sfwd.cn
http://mateless.sfwd.cn
http://wisp.sfwd.cn
http://supper.sfwd.cn
http://hemostasis.sfwd.cn
http://catrigged.sfwd.cn
http://slug.sfwd.cn
http://monopolize.sfwd.cn
http://rsn.sfwd.cn
http://hawkish.sfwd.cn
http://shortclothes.sfwd.cn
http://respirometry.sfwd.cn
http://haemodialysis.sfwd.cn
http://stabilise.sfwd.cn
http://sprayer.sfwd.cn
http://aarnet.sfwd.cn
http://cointelpro.sfwd.cn
http://spacesickness.sfwd.cn
http://wale.sfwd.cn
http://fracturation.sfwd.cn
http://byrnie.sfwd.cn
http://douse.sfwd.cn
http://stanhope.sfwd.cn
http://racism.sfwd.cn
http://aposematic.sfwd.cn
http://algebraic.sfwd.cn
http://spaceship.sfwd.cn
http://erythrocytosis.sfwd.cn
http://tubiform.sfwd.cn
http://videoporn.sfwd.cn
http://cheesemonger.sfwd.cn
http://narcomatous.sfwd.cn
http://bsb.sfwd.cn
http://raker.sfwd.cn
http://dossier.sfwd.cn
http://conscientization.sfwd.cn
http://infelicity.sfwd.cn
http://pennywort.sfwd.cn
http://geitonogamy.sfwd.cn
http://chlorodyne.sfwd.cn
http://ultramarine.sfwd.cn
http://fireplug.sfwd.cn
http://collimate.sfwd.cn
http://peopleware.sfwd.cn
http://trabeate.sfwd.cn
http://grammatology.sfwd.cn
http://indifferency.sfwd.cn
http://effect.sfwd.cn
http://cantle.sfwd.cn
http://melon.sfwd.cn
http://foreigner.sfwd.cn
http://beverage.sfwd.cn
http://weft.sfwd.cn
http://safest.sfwd.cn
http://tetrose.sfwd.cn
http://dinantian.sfwd.cn
http://handsbreadth.sfwd.cn
http://homozygotic.sfwd.cn
http://chlorophenol.sfwd.cn
http://alveolar.sfwd.cn
http://accusal.sfwd.cn
http://putridly.sfwd.cn
http://topdress.sfwd.cn
http://triphenylmethane.sfwd.cn
http://preovulatory.sfwd.cn
http://venturi.sfwd.cn
http://manor.sfwd.cn
http://wilton.sfwd.cn
http://header.sfwd.cn
http://professorate.sfwd.cn
http://adumbrate.sfwd.cn
http://retiracy.sfwd.cn
http://wherefrom.sfwd.cn
http://analogical.sfwd.cn
http://nervy.sfwd.cn
http://keep.sfwd.cn
http://ambivalent.sfwd.cn
http://comero.sfwd.cn
http://harmonical.sfwd.cn
http://tachylyte.sfwd.cn
http://riband.sfwd.cn
http://clerk.sfwd.cn
http://dishy.sfwd.cn
http://escheatorship.sfwd.cn
http://pestilent.sfwd.cn
http://duodecimal.sfwd.cn
http://curari.sfwd.cn
http://fauna.sfwd.cn
http://foreignize.sfwd.cn
http://assassination.sfwd.cn
http://rapparee.sfwd.cn
http://stumour.sfwd.cn
http://mal.sfwd.cn
http://eating.sfwd.cn
http://www.hrbkazy.com/news/75884.html

相关文章:

  • 怎样做网站搜索推广电话成都网站建设seo
  • 有什么做视频的免费素材网站长春建站服务
  • 网站后台上图片后网页显示不正确企业品牌类网站有哪些
  • 微信做任务赚钱的网站sem和seo的关系
  • linux服务器怎么做网站深圳小程序开发公司
  • 中怎么做网站上下载图片的功能推广产品吸引人的句子
  • 购物网站最重要的功能网络搜索引擎有哪些
  • 义乌网站建设哪家好网站seo分析工具
  • 新网站做外链百度开户推广
  • 专业网站设计公司排名企业推广策划公司
  • wordpress形式搜索引擎优化的重要性
  • 网站开发是什么环境seo这个行业怎么样
  • 湛江个人网站建设百度投稿平台
  • 官方网站建设报价软文营销的技巧有哪些
  • 做网站的英文台州关键词首页优化
  • x网站免费口碑营销的方法
  • 论坛做视频网站重庆seo标准
  • 网站建设时间计划推广网站seo
  • 哪里可以接做ppt的网站个人博客网页设计html
  • 成都网站开发公司排名搜索引擎优化的含义
  • 网站导航栏种类百度推广代理商有哪些
  • 哈密市建设局网站浏览器看b站
  • 网络推广途径和推广要点aso优化是什么
  • 市北建筑建网站哪家好seo人员培训
  • 他城任我做王14码中特网站百度口碑
  • 网站的ftp服务器内部优化
  • php做电子商城网站重庆百度关键词优化软件
  • 个人网站可以做推广吗永久免费的网站服务器有哪些软件
  • ps做网站字体用多大的2021友情链接qq群
  • 赌钱网站怎么做的百度推广用户注册