自用,写得有些乱(基础薄弱复习可以关注我,我这段时间会坚持更新的,每天晚上坚持看我的笔记就可以了)
屏幕前的朋友,加油啊!不焦虑哦!啦啦啦啦!!!!!!留的好心态,不怕没柴烧!
本次笔记只有基础的面试代码练习题:
一(简单题):输入: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
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
指定大小:指定 vector 的初始大小,所有元素会被默认初始化为零:std::vector
指定大小和初始值:指定 vector 的大小并给每个元素指定初始值:std::vector
使用初始化列表:std::vector
3,int i = nums1.size():是一个赋值语句,它的作用是声明一个名为 i
的整数变量,并将 nums1.size()
的结果赋值给它。size():是个成员函数,它的返回值是容器中存储的元素个数。
4,语法:void swap(T& a, T& b);T
:类型参数,表示 a
和 b
的类型,可以是任意类型。a
和 b
:待交换的两个变量,
干饭,一会再写下一个代码解析;