12.17 - 合并两个有序数组 && include<> 和 include““ 的区别

目录

1.合并两个有序数组

a.核心思想

b.思路

c.步骤

[2.include<> 和 include"" 的区别](#2.include<> 和 include"" 的区别)

a.#include<文件名>

b.#include"文件名"


1.合并两个有序数组

88. 合并两个有序数组 - 力扣(LeetCode)https://leetcode.cn/problems/merge-sorted-array/

cpp 复制代码
class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) 
    {
        int i = m - 1;
        int j = n - 1;
        int k = m + n - 1;

        while (i >= 0 && j >= 0) 
        {
            if (nums1[i] >= nums2[j]) 
            {
                nums1[k--] = nums1[i--];
            } else 
            {
                nums1[k--] = nums2[j--];
            }
        }

        while (j >= 0) 
        {
            nums1[k--] = nums2[j--];
        }
    }
};

a.核心思想

利用双指针法,将两个非递减顺序排列的有序数组合并到一个数组中,保持非递减顺序。

b.思路

由于 nums1 有足够的空间来存储合并后的数组(初始长度为 m + n,后 n 个元素为 0 可以忽略),我们可以从两个数组的末尾开始比较元素,将较大的元素放到 nums1 的合适位置。

c.步骤

① 初始化三个指针:i 指向 nums1 的有效元素末尾(即 m - 1),j 指向 nums2 的末尾(即 n - 1),k 指向 nums1 的总长度末尾(即 m + n - 1)。

② 比较 nums1[i]nums2[j] 的大小,将较大的元素放到 nums1[k] 的位置,然后移动相应的指针。

③ 重复步骤 2,直到其中一个数组的元素全部合并。

④ 如果 nums2 中还有剩余元素,将其直接复制到 nums1 的前面。

2.include<> 和 include"" 的区别

**核心区别:**搜索路径优先级不同,导致使用场景和潜在风险差异。

a.#include<文件名>

  • 搜索路径 :直接从系统标准库路径查找(如/usr/include)。
  • 适用场景 :标准库或第三方库头文件(如<iostream>)。
  • 特点:编译效率高,路径固定。

b.#include"文件名"

  • 搜索路径:优先在项目当前目录/源文件所在目录查找,未找到则转系统路径。
  • 适用场景 :项目自定义头文件(如"myheader.h")。
  • 特点:符合项目结构,但可能因路径冲突覆盖系统头文件。

希望这些内容对大家有所帮助!

感谢大家的三连支持!

相关推荐
历程里程碑2 分钟前
Linux 库
java·linux·运维·服务器·数据结构·c++·算法
Sheep Shaun4 分钟前
如何让一个进程诞生、工作、终止并等待回收?——探索Linux进程控制与Shell的诞生
linux·服务器·数据结构·c++·算法·shell·进程控制
Pluchon5 分钟前
硅基计划4.0 简单模拟实现AVL树&红黑树
java·数据结构·算法
生锈的键盘14 分钟前
推荐算法实践:交叉特征的理解
算法
小龙报20 分钟前
【51单片机】从 0 到 1 玩转 51 蜂鸣器:分清有源无源,轻松驱动它奏响新年旋律
c语言·数据结构·c++·stm32·单片机·嵌入式硬件·51单片机
乌萨奇也要立志学C++27 分钟前
【洛谷】BFS 求解最短路:从马的遍历到迷宫问题的实战解析
算法·宽度优先
石去皿31 分钟前
【嵌入式就业6】计算机组成原理与操作系统核心机制:夯实底层基础
c++·面试·嵌入式
王老师青少年编程32 分钟前
2024年信奥赛C++提高组csp-s初赛真题及答案解析(完善程序第1题)
c++·题解·真题·初赛·信奥赛·csp-s·提高组
老鼠只爱大米36 分钟前
LeetCode经典算法面试题 #46:全排列(回溯、交换、剪枝等五种实现方案详细解析)
算法·leetcode·剪枝·回溯·全排列·stj算法
Dovis(誓平步青云)1 小时前
《滑动窗口算法:从 “暴力遍历” 到 “线性高效” 的思维跃迁》
运维·服务器·数据库·算法