Leecode10.01 合并排序数组

简介: Leecode10.01 合并排序数组

给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法,将 B 合并入 A 并排序。

初始化 A 和 B 的元素数量分别为 m 和 n。

示例:

输入:

A = [1,2,3,0,0,0], m = 3

B = [2,5,6], n = 3

输出: [1,2,2,3,5,6]

class Solution {
    public void merge(int[] A, int m, int[] B, int n) {
        int lenA = m - 1;
        int lenB = n - 1;
        int max = m + n - 1;
        while(lenA >= 0 && lenB >= 0){
            if(A[lenA] > B[lenB]){
                A[max] = A[lenA];
                lenA--;
                max--;
                continue;
            }else {
                A[max] = B[lenB];
                lenB--;
                max--;
            }
        }
        while(lenB >= 0){
            A[max] = B[lenB];
            max--;
            lenB--;
        }
    }
}

提交之后,用时很短同时也不占用比较多的内存

解题思路:

由于A和B数组都是有序的,那么A数组的最后一个就是A数组中最大的一个,B数组中的最后一个就是B数组中最大的一个。

将A和B数组从最后开始往前比较,比较之后大的值就放在A数组中的最后,依次比较。当原来A数组中的数据重新都放入A数组中之后而B数组中的数据还有剩余的时候,那么就让B数组中的数字依次填入A数组中就可以了。


相关文章
|
1月前
|
算法 C语言
OJ刷题:求俩个数组的交集(没学哈希表?快排双指针轻松搞定!)
OJ刷题:求俩个数组的交集(没学哈希表?快排双指针轻松搞定!)
|
3月前
|
存储 算法 Java
【算法系列篇】二分查找——这还是你所知道的二分查找算法吗?
【算法系列篇】二分查找——这还是你所知道的二分查找算法吗?
|
1月前
|
算法 索引
算法思想总结:二分查找算法
算法思想总结:二分查找算法
|
1月前
|
算法 测试技术 API
深入理解二分查找算法(一)
深入理解二分查找算法(一)
|
2月前
|
算法 测试技术 C语言
leecode算法题之数组
leecode算法题之数组
|
3月前
面试题 10.01:合并排序的数组
面试题 10.01:合并排序的数组
14 0
|
4月前
|
存储 算法 C#
C# | 二分查找算法的实现
二分查找法一种在**有序数组**中查找目标值的算法。划重点——“**有序**”,与需要遍历整个数组的查询算法不同,二分查找法通过将数组分成两部分来快速定位目标值所在的位置。 它的主要好处在于它的效率很高。因为它能够通过每次排除一半的元素来快速缩小搜索范围,因此在大型数据集上使用二分查找法可以显著提高查找速度。
20 0
|
6月前
|
算法 测试技术 C++
C++算法:二分查找旋转数组
C++算法:二分查找旋转数组
|
7月前
|
算法
二分查找算法
以整型升序数组arr为例,将数组分为两部分:数组大小为size,设置数组下标left、mid、right,初始时分别为首元素下标0、中间元素下表(right-left)/2和最后元素下标 size-1,左部分为left-mid,右部分为 mid-right 设查找值为x,比较x与mid的大小。
40 0
|
9月前
|
算法 测试技术 API
【二分查找】二分查找算法练习题
【二分查找】二分查找算法练习题