目录
1.合并两个有序数组
a.核心思想
b.思路
c.步骤
2.include<> 和 include"" 的区别
a.#include<文件名>
b.#include"文件名"
1.合并两个有序数组
88. 合并两个有序数组 - 力扣(LeetCode)https://leetcode.cn/problems/merge-sorted-array/
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")。- 特点:符合项目结构,但可能因路径冲突覆盖系统头文件。
希望这些内容对大家有所帮助!
感谢大家的三连支持!