C/C++面试网课复习笔记(5)2025.4.8

自用,写得有些乱(基础薄弱复习可以关注我,我这段时间会坚持更新的,每天晚上坚持看我的笔记就可以了)

屏幕前的朋友,加油啊!不焦虑哦!啦啦啦啦!!!!!!留的好心态,不怕没柴烧!

本次笔记只有基础的面试代码练习题:

一(简单题):输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3

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

解释:需要合并 [1,2,3] 和 [2,5,6] 。 合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。

作者:Ikaruga
链接:https://leetcode.cn/problems/merge-sorted-array/solutions/126371/88-by-ikaruga/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

void merge(vector& nums1, int m, vector& nums2, int n) {
    int i = nums1.size() - 1;  // 指向 nums1 的最后一个位置
    m--;  // 指向 nums1 的最后一个有效元素
    n--;  // 指向 nums2 的最后一个元素
    while (n >= 0) {  // 只要 nums2 还有元素未处理
        while (m >= 0 && nums1[m] > nums2[n]) {  // 如果 nums1[m] 比 nums2[n] 大
            swap(nums1[i--], nums1[m--]);  // 把 nums1[m] 移到后面
        }
        swap(nums1[i--], nums2[n--]);  // 把 nums2[n] 放到 nums1[i]
    }
}

逐行解释:(对应颜色解析)

void merge(vector& nums1, int m, vector& nums2, int n) {
    int i = nums1.size() - 1;  // 指向 nums1 的最后一个位置(为什么减一,想那个,个数和下标的关系,我太久没看书了,忘记专业术语了!)
    m--;                  // 指向 nums1 的最后一个有效元素
    n--;                     // 指向 nums2 的最后一个元素
    while (n >= 0) {     // 只要 nums2 还有元素未处理
        while (m >= 0 && nums1[m] > nums2[n]) {     // 如果 nums1[m] 比 nums2[n] 大
            swap(nums1[i--], nums1[m--]);                  // 把 nums1[m] 移到后面
        }
        swap(nums1[i--], nums2[n--]);                      // 把 nums2[n] 放到 nums1[i]
    }
}

1.merge的语法: merge 函数用于将两个已排序的数组合并到一个目标数组中,并保持有序。以下是该函数的详细语法解释:

语法:merge(first1, last1, first2, last2, result);

//int m:表示 nums1 数组中有效元素的数量,即 nums1 中前 m 个元素是有效的(已经排好序)。

nums1:目标数组,类型为 vector&(整数向量的引用),用于存储合并后的结果。

m:nums1 中初始有效元素的数量(即 nums1 的前 m 个元素是已排序的)。

nums2:待合并的数组,类型为 vector&(整数向量的引用),也是已排序的。

n:nums2 中元素的数量

2,vector 中的数据类型 T 可以代表任何数据类型,如 int、string、class、vector(构建多维数组) 等,就像一个可以放下任何东西的容器,因此 vector 也常被称作容器。字符串类型 string 也是一种容器,

语法:在使用 vector 前,需要包含头文件:#include  

初始化 vector
空 vector:声明时不指定元素,默认为空:std::vector vec;  // 空的 vector


指定大小:指定 vector 的初始大小,所有元素会被默认初始化为零:std::vector vec(5);  // 创建一个包含 5 个 int 类型元素的 vector,元素值为 0

指定大小和初始值:指定 vector 的大小并给每个元素指定初始值:std::vector vec(5, 10);  // 创建一个包含 5 个元素的 vector,初始值为 10
使用初始化列表:std::vector vec = {1, 2, 3, 4, 5};  // 使用列表初始化

3,int i = nums1.size():是一个赋值语句,它的作用是声明一个名为 i 的整数变量,并将 nums1.size() 的结果赋值给它。size():是个成员函数,它的返回值是容器中存储的元素个数。

4,语法:void swap(T& a, T& b);T:类型参数,表示 a 和 b 的类型,可以是任意类型。a 和 b:待交换的两个变量,

干饭,一会再写下一个代码解析;

你可能感兴趣的:(笔记)