88. Merge Sorted Array
来源:互联网 发布:淘宝网的购物流程 编辑:程序博客网 时间:2024/06/06 03:18
题目
88. Merge Sorted Array
解题思路
用2个指针分别对两个数组同时从后向前遍历,哪个指针指向的数字大,第一个数组尾端的数字就是哪个。举个栗子:
nums1: [4 5 6 0 0 0] 3
nums2: [1 2 3] 3
nums1的指针 p1:2
nums2的指针 p2:2
对nums1从最尾端向前遍历 i = 3 + 3 - 1
1:nums1[p1] > nums2[p2],nums1[i–] = nums1[p1++]:nums1[4 5 6 0 0 6] p1:1p2:2
2:nums1[p1] > nums2[p2],nums1[i–] = nums1[p1++]:nums1[4 5 6 0 5 6] p1:0 p2:2
3:nums1[p1] > nums2[p2],nums1[i–] = nums1[p1++]:nums1[4 5 6 4 5 6] p1:-1 p2:2
4:p1 < 0 && p2 > 0,nums1[i–] = nums2[p2++]:nums1[4 5 3 4 5 6] p1:-1 p2:1
5:p1 < 0 && p2 > 0,nums1[i–] = nums2[p2++]:nums1[4 2 3 4 5 6] p1:-1 p2:0
6:p1 < 0 && p2 > 0,nums1[i–] = nums2[p2++]:nums1[1 2 3 4 5 6] p1:-1 p2:-1
最终结果是[1 2 3 4 5 6]
具体代码
class Solution {public: void swap(vector<int>& nums1, int m, vector<int>& nums2, int n) { int t = nums1[m]; nums1[m] = nums2[n]; nums2[n] = t; } void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { if (!n) return; int p1 = m - 1, p2 = n - 1; for (int i = m + n - 1; i >= 0; i--) { if (p1 < 0 && p2 >= 0) { nums1[i] = nums2[p2--]; } else if (p2 < 0) { break; } else if (nums1[p1] > nums2[p2]) { nums1[i] = nums1[p1--]; } else { nums1[i] = nums2[p2--]; } } }};
阅读全文
0 0
- 88. Merge Sorted Array
- 88.Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- IP协议小结
- 阿里云施尧耘:量子计算前途辉煌而任重道远
- RequestInterceptor FeignClient header
- excel2010中启用和禁用宏的多种方式及如何设置宏安全性
- Camel
- 88. Merge Sorted Array
- iOS_Xcode9_项目报错
- CSS 黑魔法小技巧,让你少写不必要的JS,代码更优雅
- Caffe入门:对于抽象概念的图解分析
- zookeeper启动失败的可能情况
- 各类有用网站
- 最新版Sublime Text Build 3143 x64汉化教程 + 注册码
- 雷鸣的游戏人生(五) --- 制定目标
- js全局变量的理解