题目:


这道题有多种实现的思路,这里使用双指针结合数组有序的特点进行解决

思路:

m代表A初始时有效元素的个数,n代表B中元素的个数,那么n+m才是A的总长度

从A的最后一个位置开始,设为cur,分别从A和B有效元素中选取最大的一个,进行比较,将较大的放入cur,随之相应的cur--,较大元素所在数组的有效个数减1

注:在进行比较时,会出现A == B的情况,此时将等号归到A<B处,B中元素优先会使得逻辑更加简单

在最后会出现两种情况:

  • B全部加入,A有剩余

  这种情况下,不需再做修改,A总体已有序

  • A全部加入,B有剩余

  这种情况下,说明B剩下的全是小于A中现有元素,直接依次加入A中便可

代码:

class Solution {
public:
void merge(vector<int>& A, int m, vector<int>& B, int n) {
int cur = m+n-;
while(m> && n>){
if(A[m-]>B[n-]) A[cur--] = A[m-- -];
else A[cur--] = B[n-- -];
}
while(n>){
A[cur--] = B[n-- -];
}
}
};

[LeetCode] 面试题 10.01.合并排序的数组的更多相关文章

  1. Leetcode春季活动打卡第三天:面试题 10.01. 合并排序的数组

    Leetcode春季活动打卡第三天:面试题 10.01. 合并排序的数组 Leetcode春季活动打卡第三天:面试题 10.01. 合并排序的数组 思路 这道题,两个数组原本就有序.于是我们采用双指针 ...

  2. LeetCode 题解 | 面试题 10.01. 合并排序的数组

    给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B. 编写一个方法,将 B 合并入 A 并排序. 初始化 A 和 B 的元素数量分别为 m 和 n. 示例: 输入: A = [ ...

  3. [LeetCode]面试题53 - I. 在排序数组中查找数字 I(二分);面试题53 - II. 0~n-1中缺失的数字(二分)

    ##面试题53 - I. 在排序数组中查找数字 I ###题目 统计一个数字在排序数组中出现的次数. 示例 1: 输入: nums = [5,7,7,8,8,10], target = 8 输出: 2 ...

  4. LeetCode 面试题 02.01. 移除重复节点

    编写代码,移除未排序链表中的重复节点.保留最开始出现的节点. 示例1: 输入:[1, 2, 3, 3, 2, 1] 输出:[1, 2, 3]示例2: 输入:[1, 1, 1, 1, 2] 输出:[1, ...

  5. LeetCode OJ:Merge Sorted Array(合并排序的数组)

    Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note:Yo ...

  6. 深入浅出数据结构C语言版(21)——合并排序

    在讲解合并排序之前,我们先来想一想这样一个问题如何解决: 有两个数组A和B,它们都已各自按照从小到大的顺序排好了数据,现在我们要把它们合并为一个数组C,且要求C也是按从小到大的顺序排好,请问该怎么做? ...

  7. 剑指offer——面试题25:合并两个 排序的链表

    自己答案: ListNode* MergeTwoSortedList(ListNode* pHead1,ListNode* pHead2) { if(pHead1==nullptr&& ...

  8. LeetCode Merge Sorted Array 合并已排序的数组

    void merge(int A[], int m, int B[], int n) { int *a=A,*b=B; ,j=; ||m==){ //针对特殊情况,比如A或B中无元素的情况 & ...

  9. LeetCode初级算法的Python实现--排序和搜索、设计问题、数学及其他

    LeetCode初级算法的Python实现--排序和搜索.设计问题.数学及其他 1.排序和搜索 class Solution(object): # 合并两个有序数组 def merge(self, n ...

随机推荐

  1. 47)PHP,数据库多表连接

    https://www.w3cschool.cn/mysql/56ik1sqv.html

  2. ipv6 mac地址转化为linklocal地址

    mac  3c:32:66:67:dd:46 linklocal地址 前六位固定  fe80:: 第七位  mac地址第一个byte进行如下计算 (byte) ((byte) (macbyte &am ...

  3. rsyslog与journal日志架构

    系统日志架构概述 在centos7系统中有两个日志服务,分别是传统的rsyslog和新添加的systemd-journal systemd-journal是一个改进型的日志管理服务,可以收集来自内核. ...

  4. Winform下编译Dev控件时提示license.licx文件错误

    有时候,用vs2005或2008,用到第3方控件的时候会自动生成licenses.licx.我用的是devexpress.在程序运行的时候总是出现dev的画面,很烦.在网上找了找,找到去掉画面的方法: ...

  5. SwipeRefreshLayout 下拉刷新

    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com ...

  6. leaflet本地加载arcgis切片

    var origin = [-20037700, 33711400];//图层起点坐标 var resolutions = [ 8466.6836000338681, // Level 0 4233. ...

  7. mac android sdk manager 无法更新(被墙)

    http://www.androiddevtools.cn/ 一句话,相见恨晚!! 想把以前的旧安卓项目拿到MAC上 环境就卡住了,以前的包是4.4的,想试试5.0的,更新不动 Android Too ...

  8. Oracle 10G 服务端的安装

    安装依赖包yum -y install binutils compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf elfutils-l ...

  9. python--mysql的CURD操作

    from pymysql import * def main(): # 创建Connextion连接 conn = connect(host='localhost', port=3306, user= ...

  10. Java 中Enum的使用与分析

    https://www.cnblogs.com/softidea/p/3760235.html https://blog.csdn.net/qq_27093465/article/details/52 ...