【Leetcode】88、合并两个有序数组 Easy
这是一道非常简单的题, 开辟一个数组用双指针或者把两个并在一起用快排都可以很容易解决
时隔一年, 再次看到这题, 我想再原地用双指针解决
一开始的思路是使用双指针,初始时分别指向两个数组的首个元素, 之后如果第二个指针的数字更小, 则交换两个指针指向的元素,再将指针滑动。
动手时发现这种方法不易实现。
换了一个思路, 两个指针从数组末尾往前滑动, 非常漂亮的解决了这题。
class Solution { public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { int p1 = m - 1, p2 = n - 1; for (int p = nums1.size() - 1; p >= 0; --p) { if (p1 < 0) { nums1[p] = nums2[p2--]; continue; } if (p2 < 0) { nums1[p] = nums1[p1--]; continue; } if (nums1[p1] <= nums2[p2]) { nums1[p] = nums2[p2]; --p2; } else { nums1[p] = nums1[p1]; --p1; } } } };
分类:
Leetcode
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话