【Merge Sorted Array】cpp
题目:
Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.
Note:
You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional elements from nums2. The number of elements initialized in nums1 and nums2 are m and n respectively.
代码:
class Solution { public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { int i1 = m-1, i2 = n-1, i = m+n-1; while ( i1>=0 && i2>=0 ){ if ( nums1[i1]<nums2[i2] ){ nums1[i--] = nums2[i2--]; } else{ nums1[i--] = nums1[i1--]; } } while (i2>=0) nums1[i--] = nums2[i2--]; } };
tips:
双指针,从后往前扫描。
如果最后i1大于等于0则不用处理了;如果最后i2大于等于0,再处理一下。记住。
============================================
第二次过这道题,想起来双指针从后往前扫描了,细节没有记清。改了两次才AC。
class Solution { public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { int i1 = m-1; int i2 = n-1; int i = m+n-1; while ( i1>=0 && i2>=0 ) { if ( nums1[i1]>nums2[i2] ) { nums1[i--] = nums1[i1--]; } else { nums1[i--] = nums2[i2--]; } } while ( i2>=0 ) nums1[i--] = nums2[i2--]; } };
分类:
cpp刷Leetcode
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?