88.合并两个有序数组

目录

题目

给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。

请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。

注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。

解法

cpp 复制代码
class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
        int p1 = m - 1, p2 = n - 1;
        int tail = m + n - 1;
        int cur;
        while (p1 >= 0 || p2 >= 0) {
            if (p1 == -1) {
                cur = nums2[p2--];
            } else if (p2 == -1) {
                cur = nums1[p1--];
            } else if (nums1[p1] > nums2[p2]) {
                cur = nums1[p1--];
            } else {
                cur = nums2[p2--];
            }
            nums1[tail--] = cur;
        }
    }
};

原地插入的函数

这样写不对,用数组.

如何使用sort()

排序需要有头有尾

如何删除其中含0的数?

cpp 复制代码
vec.erase(vec.begin() + 2);

双指针问题,从逆向开始,是个很巧妙的地方

相关推荐
坐吃山猪几秒前
Python命令行工具Click
linux·开发语言·python
宠..几秒前
为单选按钮绑定事件
运维·服务器·开发语言·数据库·c++·qt·microsoft
业精于勤的牙2 分钟前
最长特殊序列(一)
java·javascript·数据结构
咋吃都不胖lyh6 分钟前
在任务管理器中筛选、查看进程
java·开发语言
宠..6 分钟前
对单选按钮分组
开发语言·数据库·c++·qt·安全·安全性测试
大学生资源网8 分钟前
基于JavaWeb的邮件收发系统的设计与实现(源码+文档)
java·开发语言·spring boot·mysql·毕业设计·源码·课程设计
cici1587414 分钟前
基于高斯混合模型(GMM)的说话人识别系统MATLAB实现
开发语言·人工智能·matlab
崇山峻岭之间15 分钟前
Matlab学习记录11
开发语言·学习·matlab
此剑之势丶愈斩愈烈15 分钟前
Spring获取URL信息
java·后端·spring
Vic1010117 分钟前
Redis防重复点击与分布式锁
java·数据库·redis·分布式