数组-合并两个有序数组(双指针,从后往前)
题意:
给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。
说明:
初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。
你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。
示例:
输入:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6], n = 3
输出:[1,2,2,3,5,6]
思路:
要合并两个有序数组,这里用的是双指针,从后往前
使用指针i , j ,其中i = m-1; j = n -1; 指向数组末尾。
用p 指向 放入的元素,p = m + n -1;
通过循环遍历两个数组末尾元素,依次比较,二者谁更大,谁就放入nums1中
ps:代码中有详细注释
Java代码实现:
class Solution {public void merge(int[] nums1, int m, int[] nums2, int n) {//倒着遍历两个数组取最大值放到nums1的最末尾int i = m-1;int j = n-1;int p = m+n-1;//如果nums2遍历完了,那么num1剩下没有遍历到的数据就保持原样,因此就可以退出循环while(j>=0){//nums1遍历完成,将num2剩下的数据依次放入nums1if(i < 0){nums1[p--] = nums2[j--];}else if(nums1[i] > nums2[j]){nums1[p--] = nums1[i--];}else if(nums1[i] <= nums2[j]){nums1[p--] = nums2[j--];}}}
}
数组-合并两个有序数组(双指针,从后往前)相关推荐
- 算法-----数组------合并两个有序数组
首先,恭喜自己,写的解决改算法的代码,是所有java里面执行最快的. 自己辛苦练习了一周多的数组算法题,终于写出了最优的解决方案.虽然方法有点笨,没有别人写的简单,但是仍然值得鼓励.. 给定两个有序整 ...
- 双指针:88. 合并两个有序数组
题目链接 88. 合并两个有序数组 解题思路 一. 合并数组后排序,时间复杂度为O((n+m)log(n+m)) 代码: 快排详解 class Solution {public void merge( ...
- 合并两个有序数组(双/三指针)
今天写作业,合并两个有序数组a和b,时间复杂度要求O(n),空间复杂度要求O(1). 很快想到创建第三个数组c,用双指针初始化指向a和b的头元素,每次选择较大者在c上尾插进去之后,再后移相对应a或者b ...
- 如何快速合并两个有序数组?
前言 大家好,我是来自于「华为」的「程序员小熊」.今天给大家带来一道与「数组」相关的题目,这道题同时也是字节.微软和亚马逊等互联网大厂的面试题,即力扣上的第 88 题-合并两个有序数组. 本文主要介绍 ...
- 88. 合并两个有序数组 JavaScript实现
88. 合并两个有序数组 1.直接合并后排序 将nms2放到nums1的后面,然后进行排序 var merge = function(nums1, m, nums2, n) {// 将splice将n ...
- 算法刷题打卡第11天:合并两个有序数组
合并两个有序数组 难度:简单 给你两个按非递减顺序排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目. 请你合并 nums2 到 ...
- Leetcode-D33-数组-66. 加一88. 合并两个有序数组
一.复习 移除元素-双指针问题,一个指针用来记录下一个扫描哪个元素:另一个指针用来记录下一个写哪里 搜索插入位置-二分法,不断与中间位置的数字比较大小值,缩小区间范围:当两侧只差一个单位时,看val是 ...
- LeetCode-双指针-88. 合并两个有序数组
88. 合并两个有序数组 思路:归并排序,一长一短,肯定会有一个先放完,放完后把另一个拷贝过去即可. 为了避免覆盖所以从最后开始向前放最大的元素 class Solution {public:void ...
- LeetCode 88合并两个有序数组89格雷编码
微信搜一搜:bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打卡群,欢迎 ...
最新文章
- ubuntu 系统 apt-get install python3-pip 依赖报错解决方法
- 单位斜变函数matlab,实验二 用MATLAB实现线性系统的时域分析
- 对字符串数组排序,使所有变位词都相邻(C++)
- OO第三次博客总结作业
- (原创总结) 几种通信编码方式
- php7性能原理,php7卓越性能背后的原理有哪些?
- c语言布尔类型赋值给整型,C语言的布尔类型(_Bool)【转】
- asp.net很有用的字符串操作类
- SQL基础面试题(五)
- 远程连接linux主机_Linux远程桌面连接Windows
- Java SE 随机数生成器 Random
- htc tracker avatar
- 面试官:测试计划和测试方案有什么区别?
- 如何修改网络连接的网络位置
- 如何使用 Putty 以密钥 private key 的方式登录腾讯云主机
- CSPS2019Day1T2(括号树)题解
- win7去掉桌面快捷方式小箭头
- sdut oj2133 数据结构实验之栈三:后缀式求值
- 将josn对象转换成string并格式化
- 这类注解都不知道,还好意思说用过Spring Boot?