《力扣每日一题》—— 合并两个有序数组

✅作者简介:大家好,我是小鱼儿,大家可以叫我鱼儿 📒博客首页:是小鱼儿哈 🔥系列专栏:一起刷好题 🌻每日一句:…

✅作者简介:大家好,我是小鱼儿,大家可以叫我鱼儿

📒博客首页:是小鱼儿哈

🔥系列专栏:一起刷好题

🌻每日一句:努力不是重点,常态化才是关键。真正努力的人,能随时进入任何角色,在过程中找到感觉和快乐。

💖博主也在学习阶段,如发现问题请告知,非常感谢💖

📝思路一:常规双指针

不是说nums1的数组长度是m+n吗?

所以一开始我是想直接把nums2的元素按大小添加到nums1中😂

但在添加过程我发现如果直接将nums1和nums2中元素的值进行比较,按大小顺序添加到nums1里,这样是会把原来nums1中的元素 给覆盖掉的,所以我就直接把nums1中合并前的元素复制到了tmp数组中

然后设置两个双指针,分别指向各种数组的起始位置,通过这两个双指针不断的对tmp数组和nums2数组进行大小比较,再依次放到nums1数组中

🌰代码如下:


📝思路二:逆序双指针

我们上面那种思路为了防止nums1中的元素被覆盖,用到了额外的数组

🍑但分析题目后我们发现:nums1后边都是0,如果我们把比较后的元素放到nums1的后边,也就是把元素从后往前的放到nums1中(这样不就避免了元素覆盖吗😁)

💡同时我们也应该注意到,既然是把元素从后往前的放到nums1中,那么我们一开始找到肯定这两个数组中最大的元素

💡所以说我们的两个指针,一开始就应该就应该从各种数组中有效元素的结尾出发,然后让他们两两的进行比较求得较大的那个。

💡之后大的继续前移,小的不动,之后再和大的那个元素的前一个进行比较

代码:

本文来自网络,不代表软粉网立场,转载请注明出处:https://www.rfff.net/p/7894.html

作者: HUI

发表评论

您的电子邮箱地址不会被公开。

返回顶部