当前位置: 首页 > news >正文

8. Merge Sorted Array

这道题,如果直接排序,虽然可以ac但完全没有理解题目想要考察什么。想到双指针合并的做法,则进阶了一层。想到逆向双指针,才真正领会了题目要考察的点。

双指针合并法:

class Solution {
public:void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {vector<int> res;res.reserve(m+n);int i = 0;int j = 0;while(i < m && j < n){if(nums1[i] <= nums2[j]){res.push_back(nums1[i++]);}else{res.push_back(nums2[j++]);}}while(i < m) res.push_back(nums1[i++]);while(j < n) res.push_back(nums2[j++]);nums1 = std::move(res); //比nums1 = res;快}
};

逆向双指针法:

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--];elsenums1[k--] = nums2[j--];}while(i >= 0) nums1[k--] = nums1[i--];while(j >= 0) nums1[k--] = nums2[j--]; }
};


http://www.mrgr.cn/news/94966.html

相关文章:

  • 【数据结构】LinkedList与链表(1) + 经典面试OJ题解析 —— 有码有图有真相
  • Mysql:关于命名
  • 五、面向对象
  • 大模型知识蒸馏:技术演进与未来展望
  • Pydoll:告别WebDriver!Python异步Web自动化测试工具
  • Linux上的`i2c-tools`工具集的详细介绍;并利用它操作IMX6ULL的I2C控制器进而控制芯片AP3216C读取光照值和距离值
  • 使用Azure CDN进行子域名接管
  • 网络爬虫【爬虫库urllib】
  • 前端剪贴板操作:从传统方法到现代方案
  • 3D标定中的平面约束-平面方程的几何意义
  • OpenHarmony 开源鸿蒙北向开发——hdc工具安装
  • 自动驾驶背后的数学:特征提取中的线性变换与非线性激活
  • 搞定python之九----常用内置模块
  • 1~2 课程简介+ESP32-IDF环境搭建(虚拟机Linux环境下)
  • 【直播预告】“大模型加速器2.0”版本即将开箱!破解AI“幻觉”难题
  • Softmax 函数简介及其Python实现
  • SpringBoot实现发邮件功能+邮件内容带模版
  • vulhub-Billu-b0x攻略
  • Unity 接入抖音小游戏
  • JavaScript 复制功能实现:从基础到进阶